티스토리 뷰

반응형

1. 개발환경 : Spring 4.2.8, java 1.8

 

2. @Value("${aaa.bbb}") 로 값을 할당하는 String 변수를 만든다.

@Value("${aaa.bbb}")
private String prop_val;

   : prop_val의 값이 "${aaa.bbb}"로 출력된다. property 파일에 등록된 값이 주입되지 않은 것이다.

 

3.  AppConfig.java 설정파일에 application.property 파일을 연결한다.

@PropertySource(value=property파일경로)

   : prop_val의 값이 여전히 "${aaa.bbb}"로 출력된다.

 

4. PropertySourcesPlaceholderConfigurer를 Bean으로 등록한다.

@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
     return new PropertySourcesPlaceholderConfigurer(); 
}

   : prop_val의 값이 property 파일에 등록된 값을 갖는다.

 

4-1. 그러나 property 파일에 설정된 값이 한글인 경우 prop_val의 값을 출력하면 깨진 문자가 나타난다.

   : 여기저기 살펴보았는데 아래처럼 하면 된다는 포스팅이 많았다.

     (참고: https://stackoverflow.com/questions/25325892/propertysource-and-utf-8-properties-file)

@PropertySource(value=property파일경로, encoding="UTF-8")

     그러나 버전의 문제인지 내 소스의 @PropertySource 인터페이스에는 encoding이란 속성이 없었다.

   : 그래서 찾아낸 방법은 @PropertySource 부분을 제거하고 PropertySourcesPlaceholderConfigurer만을 사용하는 것이다.

     (참고: https://m.blog.naver.com/junsu60/220422158206)

@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
     PropertySourcesPlaceholderConfigurer prop = new PropertySourcesPlaceholderConfigurer();
     prop.setLocation(new ClassPathResource("properties/application.properties"));
     prop.setFileEncoding("UTF-8");
     return prop;
}


5. prop_val 값이 여전히 property 파일에 등록된 값으로 출력되지 않는다. 그런데 "${aaa.bbb}"이 아니라 null로 출력된다.

   : prop_val이 static 변수인지 확인한다. 

     (참고 : https://jiyeonseo.github.io/2016/08/27/spring-inject-static-variables/)

     반드시 static 변수로 사용해야 하는 경우에는 get, set 메소드를 통해 값을 할당할 수 있다.

@Value("${aaa.bbb}")
private static String prop_val;

@Value("${aaa.bbb}")
public void setPropVal(String val) {
   prop_val = val;
}

public String getPropVal() {
   return prop_val;
}

 

6. 기타 참조했던 사이트

https://cnpnote.tistory.com/entry/SPRING-PropertySource-%EB%B0%8F-UTF-8-%ED%8A%B9%EC%84%B1-%ED%8C%8C%EC%9D%BC

 

https://kingbbode.tistory.com/39

 

https://stackoverflow.com/questions/33016434/value-with-propertysourceclasspathapplication-properties-allways-return-n

 

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/support/PropertySourcesPlaceholderConfigurer.html    

반응형

'Spring' 카테고리의 다른 글

DI (Dependency Injection) : 의존성 주입  (0) 2019.03.08
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함