복붙노트

[SPRING] Spring @Value ( "$ {}")는 종종 null입니다.

SPRING

Spring @Value ( "$ {}")는 종종 null입니다.

Spring Boot 응용 프로그램을 사용하고 있습니다. @Component 클래스에서는 @Value 필드가로드되지만 다른 클래스에서는 항상 null입니다.

내 @ Bean / @ Component가 생성 된 후에 @Value (s)가로드 된 것 같습니다.

내 @Bean의 속성 파일에서 일부 값을로드해야합니다.

어떤 제안있어?

해결법

  1. ==============================

    1.속성 (및 모든 Bean 의존성)은 Bean이 생성 된 후 (생성자의 실행) 주입됩니다.

    속성 (및 모든 Bean 의존성)은 Bean이 생성 된 후 (생성자의 실행) 주입됩니다.

    거기에 필요할 경우 생성자 삽입을 사용할 수 있습니다.

    @Component
    public class SomeBean {
        private String prop;
        @Autowired
        public SomeBean(@Value("${some.prop}") String prop) {
            this.prop = prop;
            //use it here
        }
    }
    

    또 다른 옵션은 @PostConstruct로 주석 된 메소드에서 생성자 로직을 이동하는 것입니다.이 메소드는 Bean이 작성되고 모든 종속성과 특성 값이 해석 된 후에 실행됩니다.

  2. ==============================

    2.시도해 봤니?

    시도해 봤니?

    @Component
    @PropertySource("file:/your/file/path")
    public class MyBean {
    
      private @Value("${property}") String property;
      ...
    }
    
  3. ==============================

    3.그것을 정적 변수로 해석 할 때 발생할 수 있습니다. 나는 이것을 언젠가 되돌아보고 그것을 단지 정전기 제거만으로 해결했다. 사람들이 항상 말하듯이, 정적을 사용하면서주의를 기울이십시오.

    그것을 정적 변수로 해석 할 때 발생할 수 있습니다. 나는 이것을 언젠가 되돌아보고 그것을 단지 정전기 제거만으로 해결했다. 사람들이 항상 말하듯이, 정적을 사용하면서주의를 기울이십시오.

  4. ==============================

    4.또 다른 가능한 이유는 '@Value'라인이 이러한 속성 / 값이 필요한 라인 아래에 있다는 것입니다.

    또 다른 가능한 이유는 '@Value'라인이 이러한 속성 / 값이 필요한 라인 아래에 있다는 것입니다.

    이 문제를 디버깅하는 데 많은 시간을 할애하여 라인의 순서가 중요하다는 것을 알았습니다!

  5. from https://stackoverflow.com/questions/28636060/spring-value-often-null by cc-by-sa and MIT license