[SPRING] bean 클래스의 속성 값은 생성자에서 null입니다.
SPRINGbean 클래스의 속성 값은 생성자에서 null입니다.
내 서비스 구현 클래스 / bean에서 내 application.properties 파일의 값을 사용하려고합니다. 그러나 bean이 my config 클래스를 통해 초기화 될 때, 프로퍼티 값은 모두 null이다.
구성 클래스 :
@Configuration
public class AppConfig {
@Bean AppServiceImpl appServiceImpl() {
return new AppServiceImpl();
}
}
서비스 클래스 :
@Component
public class AppServiceImpl implements AppService {
@Value("${value.one}")
String value_one;
@Value("${value.two}")
String value_two;
@Value("${value.three}")
String value_three;
//values are null here
public AppServiceImpl() {
functionOne(value_one, value_two, value_three);
}
}
application.properties (src / main / resources 아래) :
value.one=1
value.two=2
value.three=3
일부 디버깅 할 AppConfig 클래스를 찾을 수 있습니다 속성 파일을 발견하고 @Value ( "$ {value.one}") String value_one; 거기 그것은 그것이 값 1을 기대 한대로 받았다는 것을 보여준다.
그러나 내 App ServiceImpl 클래스에서 모든 값은 null입니다. 여기서 내가 뭘 잘못하고 있니? 이것이 Spring Boot에서 어떻게 올바르게 수행되어야 하는가? 아니면 그냥 봄.
감사.
해결법
-
==============================
1.생성자의 값을 사용하면 즉시 사용할 수 없습니다. 실제로 그들은 특성에 주입된다. 여기서 일어난 일은 봄이 인스턴스를 생성 한 후 속성 값을 업데이트하는 것입니다.
생성자의 값을 사용하면 즉시 사용할 수 없습니다. 실제로 그들은 특성에 주입된다. 여기서 일어난 일은 봄이 인스턴스를 생성 한 후 속성 값을 업데이트하는 것입니다.
생성자에서 이러한 값을 사용하려면 생성자 주입을 사용해야합니다. 생성자에 의한 주입은 모범 사례입니다.
public class AppServiceImpl implements AppService { String value_one; String value_two; String value_three; //values are null here public AppServiceImpl(String value1, String value2, String value3) { value_one = value1; value_two = value2; value_three = value3; functionOne(value_one, value_two, value_three); } }
그리고 구성 클래스
@Configuration public class AppConfig { @Bean AppServiceImpl appServiceImpl(@Value("${value.one}") String value1, @Value("${value.two}") String value2, @Value("${value.three}") String value3) { return new AppServiceImpl(value1, value2, value3); } }
-
==============================
2.이러한 값은 인스턴스가 작성된 후에 주입됩니다. 그래서 그들은 생성자에서 null입니다.
이러한 값은 인스턴스가 작성된 후에 주입됩니다. 그래서 그들은 생성자에서 null입니다.
값이 삽입 된 후 메소드를 실행하려면 @ javax.annotation.PostConstruct를 사용하십시오.
@PostConstruct public void init(){ // method name doesn't matter functionOne(value_one, value_two, value_three); }
from https://stackoverflow.com/questions/50525053/property-values-in-bean-class-are-null-in-constructor by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Hibernate pojo에서 @lob을위한 적절한 하이버 네이트 매핑. 우리는 최대 절전 모드 매핑을 사용하고 있습니다. 당신은 제게 @lob annotation을 말해 줄 수 있습니까? (0) | 2019.02.25 |
---|---|
[SPRING] Spring Security OAuth2와 리소스 서버가 필요합니까? (0) | 2019.02.25 |
[SPRING] @Controller 클래스의 트랜잭션 메소드는 트랜잭션으로 간주되지 않습니다. (0) | 2019.02.25 |
[SPRING] Spring MVC에서 리다이렉션을 사용하는 이유는 무엇입니까? (0) | 2019.02.25 |
[SPRING] Spring MVC와 Jackson으로 JSON으로 날짜 전달하기 (0) | 2019.02.25 |