EgovPropertyServiceImpl 설정 오류 입니다.
- 작성자 :
- 임*화
- 작성일 :
- 2023-07-07 11:03:01
- 조회수 :
- 875
- 구분 :
- 실행환경 / 3.10
- 진행상태 :
- 완료
Q
안녕하세요??
현재 셋팅을하고 아무 문제없이 잘 돌아가고 있습니다.
그런데, properties 파일을 서버에 맞게 읽기 위해서 아래와 같이 web.xml에 설정을 했습니다.
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>local</param-value>
</context-param>
이렇게 설정을하고 context-common.xml 파일에다가 PropertyPlaceholderConfigurer 설정을 아래와 같이 했습니다.
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/global.properties</value>
<value>classpath:/application-${spring.profiles.active}.properties</value>
</list>
</property>
</bean>
테스트 결과 여기까지는 아무 문제없이 잘 돌아갑니다.
그런데, context-properties.xml 파일에 아래와 같이 설정을 하면 에러가 납니다.
<bean id="propertiesService" class="egovframework.rte.fdl.property.impl.EgovPropertyServiceImpl" destroy-method="destroy">
<property name="extFileName">
<set>
<map>
<entry key="encoding" value="UTF-8" />
<entry key="filename" value="classpath:/global.properties" />
</map>
<map>
<entry key="encoding" value="UTF-8" />
<entry key="filename" value="classpath:/application-${spring.profiles.active}.properties" />
</map>
</set>
</property>
</bean>
상세 에러 내용은 첨부로 해드렸고, 에러 내용은 결국 ${spring.profiles.active} 이걸 못찾는다고 나오는데..
context-common.xml 파일에서는 잘 읽고 잘 되고 있는데 이상하게 EgovPropertyServiceImpl 여기에서 사용하면 에러가 납니다.
서버 설정에 -Dspring.profiles.active=local 하면 다 잘되긴 하는데.. 운영서버를 컨트롤 할수 없어서 web.xml에 설정을 한것인데..
제가 궁금한거는 context-common.xml 에서는 잘 돌아 가는데 context-properties.xml 파일에서는 왜 인지를 못하는지 그게 궁금합니다.
확인 부탁드리겠습니다.
감사합니다.
현재 셋팅을하고 아무 문제없이 잘 돌아가고 있습니다.
그런데, properties 파일을 서버에 맞게 읽기 위해서 아래와 같이 web.xml에 설정을 했습니다.
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>local</param-value>
</context-param>
이렇게 설정을하고 context-common.xml 파일에다가 PropertyPlaceholderConfigurer 설정을 아래와 같이 했습니다.
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/global.properties</value>
<value>classpath:/application-${spring.profiles.active}.properties</value>
</list>
</property>
</bean>
테스트 결과 여기까지는 아무 문제없이 잘 돌아갑니다.
그런데, context-properties.xml 파일에 아래와 같이 설정을 하면 에러가 납니다.
<bean id="propertiesService" class="egovframework.rte.fdl.property.impl.EgovPropertyServiceImpl" destroy-method="destroy">
<property name="extFileName">
<set>
<map>
<entry key="encoding" value="UTF-8" />
<entry key="filename" value="classpath:/global.properties" />
</map>
<map>
<entry key="encoding" value="UTF-8" />
<entry key="filename" value="classpath:/application-${spring.profiles.active}.properties" />
</map>
</set>
</property>
</bean>
상세 에러 내용은 첨부로 해드렸고, 에러 내용은 결국 ${spring.profiles.active} 이걸 못찾는다고 나오는데..
context-common.xml 파일에서는 잘 읽고 잘 되고 있는데 이상하게 EgovPropertyServiceImpl 여기에서 사용하면 에러가 납니다.
서버 설정에 -Dspring.profiles.active=local 하면 다 잘되긴 하는데.. 운영서버를 컨트롤 할수 없어서 web.xml에 설정을 한것인데..
제가 궁금한거는 context-common.xml 에서는 잘 돌아 가는데 context-properties.xml 파일에서는 왜 인지를 못하는지 그게 궁금합니다.
확인 부탁드리겠습니다.
감사합니다.
환경정보
-
- OS 정보 : Windows11
- 표준프레임워크 버전 : 3.10
- JDK(JRE) 정보 : 1.7
- WAS 정보 : Tomcat8.5
- DB 정보 : Oracle
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크센터입니다.
스프링에서 제공하는 PropertyPlaceholderConfigurer 클래스는
내부적으로 Environment 객체를 이용하여
${...} 안의 값을 처리할 수 있는 반면에
EgovPropertyServiceImpl 클래스는 단순히 설정한 위치의 파일을 읽어
내부 설정값을 지정하는 방식으로 처리됩니다.
따라서, 프로파일별 설정이 필요하면 PropertyPlaceholderConfigurer을 이용하여
구성하는 방식으로 처리하시기 바랍니다.
감사합니다.
표준프레임워크센터입니다.
스프링에서 제공하는 PropertyPlaceholderConfigurer 클래스는
내부적으로 Environment 객체를 이용하여
${...} 안의 값을 처리할 수 있는 반면에
EgovPropertyServiceImpl 클래스는 단순히 설정한 위치의 파일을 읽어
내부 설정값을 지정하는 방식으로 처리됩니다.
따라서, 프로파일별 설정이 필요하면 PropertyPlaceholderConfigurer을 이용하여
구성하는 방식으로 처리하시기 바랍니다.
감사합니다.