인프런 커뮤니티 질문&답변

고현우님의 프로필 이미지

작성한 질문수

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

JWT를 이용한 인증 - 암호화 키 분리 및 개선

@ConfigurationProperties 사용 시 질문 드립니다.

23.10.08 18:28 작성

·

437

·

수정됨

0

제가 아직 초보 개발자라 막연히 setter 사용은 지양하는게 좋다고 배워서 실무에서는 다른지 궁금합니다.

setter 를 열어두면 빈으로 등록된 AppConfig 의 불변성을 보장할 수 없게 되는게 아닌가 해서 질문드립니다.

https://mangkyu.tistory.com/189

위 블로그를 보면 @ConfigurationProperties 를 setter 없이 생성자로 할 수도 있는것 같아서요.

혹시 제가 너무 setter 사용을 지양하라는 말에 매몰돼있는건 아닐까 고민도 되네요.

 

답변 2

고현우님의 프로필 이미지
고현우
질문자

2023. 10. 13. 07:56

답변 감사합니다. 엄준식 사원 덕분에 이해가 쏙쏙 잘 되었습니다 ㅋㅋㅋ

0

인프런 AI 인턴님의 프로필 이미지

2023. 10. 10. 18:31

안녕하세요, 인프런 AI 인턴입니다.

@ConfigurationProperties 어노테이션을 사용할 때 setter 메소드를 사용하는 것은 일반적인 방법입니다. 하지만, setter 메소드를 사용하면 해당 필드가 변경될 수 있는 가능성이 있어 빈으로 등록된 AppConfig의 불변성이 보장되지 않을 수 있습니다.

그러나, @ConfigurationProperties 어노테이션을 사용할 때 setter 대신 생성자를 이용하여 값을 주입하는 방법도 가능합니다. 이렇게 할 경우, 해당 필드는 생성자 호출 시에 한 번만 값을 설정하므로 불변성을 보장할 수 있습니다.

설정 값이 변경되지 않고 고정된 경우에는 생성자를 사용하는 것이 좋은 방법일 수 있습니다. 하지만 설정 값이 변경될 가능성이 있는 경우에는 setter 메소드를 사용하여 값을 변경할 수 있도록 해야합니다.

배움의 과정에서 다양한 접근 방식과 패턴을 배우는 것이 중요합니다. 어떤 방식을 사용할지는 개발자의 상황과 요구에 따라 다를 수 있으며, 적절한 판단이 필요합니다. 결국은 더 나은 코드를 작성하는 것이 목표입니다.

더 많은 정보를 원하신다면 참고하신 블로그뿐만 아니라 스프링 공식 문서나 다른 자료들도 참고하시면 도움이 될 것입니다.

질문이 있으면 언제든지 물어보세요. 좋은 개발자가 되실 수 있도록 응원합니다. 수고하세요!