programing

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

i4 2023. 7. 15. 09:42
반응형

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

저는 스프링 부트 애플리케이션을 사용하고 있습니다.일부에서는@Component학급@Value필드는 로드됩니다. 대신 다른 클래스에서는 항상 로드됩니다.null.

인것 같습니다@Value다음에 로드됩니다.@Bean/@Component생성됩니다.

속성 파일에서 몇 가지 값을 로드해야 합니다.@Bean.

어떤 제안이 있습니까?

특성(및 모든 빈 종속성)은 빈이 생성된 후(생성자 실행) 주입됩니다.

필요한 경우 생성자 주입을 사용할 수 있습니다.

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

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

정적 변수로 해결할 때 발생할 수 있습니다.저는 얼마 전에 이것을 관찰했고 정전기를 제거하는 것만으로 해결했습니다.사람들이 항상 말하는 것처럼 정전기를 사용할 때 주의해야 합니다.

시도해 보셨습니까?

@Component
@PropertySource("file:/your/file/path")
public class MyBean {

  private @Value("${property}") String property;
  ...
}

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

저는 이 문제를 디버깅하는 데 많은 시간을 소비했고, 줄의 순서가 중요하다는 것을 알게 되었습니다!

언급URL : https://stackoverflow.com/questions/28636060/spring-value-often-null

반응형