Service를 하나 만들었고, Service 생성자 안에서 값을 초기화 해주는 로직을 만들고 있었다.
각각 환경마다 다르게 셋팅해야하는 값이라 application.properties에 값을 넣어주고 불러와서 사용하고 있어다 .
예제를 보자면 이런식
@Value("{test.title}")
String title;
private OtherService otherService;
public WebService(OtherService otherService) {
this.otherService = otherService;
if (title.equals("dev")) {
System.out.println("dev setting");
} else {
System.out.println("other setting");
}
}
@Value annotation을 이용하여 값을 받아오는데 실행해보면 NPE오류가 발생한다.
확인해보니 순서가 injection을 모두 마친후에 @Value 불러오기 떄문이였다.
그럴 경우 @PostConstruct 어노테이션을 이용하여 따로 처리해주도록 변경하면 된다.
아래와 같이 변경
@Service
public class WebService {
@Value("{test.title}")
String title;
private OtherService otherService;
public WebService(OtherService otherService) {
this.otherService = otherService;
}
@PostConstruct
public void init() {
if (title.equals("dev")) {
System.out.println("dev setting");
} else {
System.out.println("other setting");
}
}
}
'Programming > Springboot' 카테고리의 다른 글
[springboot/jpa] jpa crud example 1 (0) | 2020.10.26 |
---|---|
[springboot] junit4 + controller test [mockMvc] (0) | 2020.03.27 |
[springboot] jar 실행시 profile 선택 (0) | 2019.01.09 |
[springboot] springboot + spring security + jpa + thymeleaf (1) | 2017.06.15 |
[springboot] mybatis-multiple-datasource / db 여러개 사용 (0) | 2017.03.29 |