@Value 어노테이션 사용 시 주의할 점

김명수·2026년 2월 6일

매일메일

목록 보기
103/127
post-thumbnail

@Value 어노테이션 사용 시 주의할 점

●@Value 어노테이션 주의점

  • @Value은 설정 파일에 설정한 값을 주입할 수 있는 어노테이션이며, 첫 번째로 주의해야 할 부분은 주입 시점이며, @Value 어노테이션은 대상 컴포넌트가 스프링 빈으로 등록되고 의존 관계를 주입할 때 동작하며 따라서 환경 변수를 주입받는 대상 클래스에 @Component 어노테이션을 붙여주지 않는다면 해당 클래스는 컴포넌트 스캔이 대상이 되지 않아 스프링 빈으로 등록되지 않고, @Value 어노테이션 또한 동작하지 않음

  • 또한 상황에 따라서 적절한 주입 방식을 선택해야 하며, 빈을 주입받을 때와 마찬가지로 @Value 어노테이션을 사용할 때도 필드 주입, 생성자 주입, setter 주입 등의 방식을 사용할 수 있으며 따라서 이들의 장단점을 비교하고, 상황에 따라 적절한 주입 방식을 선택

  • 마지막으로 프로퍼티 파일의 경로와 스코프를 확인해야 하며, application.yaml 이 클래스 패스에 존재해야 하고, 프로퍼티 파일이 여러 개일 경우 우선순위를 고려해야 함

●@ConfigurationProperties 어노테이션과의 차이점

  • 스프링의 프로퍼티 파일의 값은 Environment에 등록되며, 두 어노테이션 모두 이 값을 불러올 수 있다는 공통점이 있으며 단, @Value의 경우에는 단일 값을 주입받기 위해서 사용되며, RelaxedBinding이 적용되지 않음

  • RelaxedBingding이란 프로퍼티 이름이 조금 달라도 유연하게 바인딩을 시켜주는 규칙을 의미하며 반면, @ConfigurationProperties 어노테이션은 프로퍼티에 있는 값을 클래스로 바인딩하기 위해 사용되며 그리고, 한 번에 여러 값을 바인딩 받을 수 있으며 RelaxedBinding을 적용

profile
신입개발자

0개의 댓글