여러 프로젝트/모듈에서 PropertyPlaceholderConfigr을 통해 여러 속성 파일 사용
현재 여러 프로젝트/모듈로 분할된 신청서를 작성 중입니다.예를 들어 다음 모듈을 살펴보겠습니다.
- myApp-DAO
- 마이앱재버
각 모듈에는 자체 Spring 컨텍스트xml 파일이 있습니다.DAO 모듈의 경우 PropertyPlaceholderConfigr이 있으며 필요한 db 연결 매개 변수를 사용하여 속성 파일을 읽습니다.jabber 모듈에는 jabber 연결 속성용 PropertyPlaceHolderConfigr도 있습니다.
이제 myApp-DAO와 myApp-jabber를 포함하는 주요 애플리케이션이 나옵니다.모든 콘텍스트파일을 읽고 하나의 큰 Spring 콘텍스트를 시작합니다.아쉽게도 컨텍스트당 Property Placeholder Configr은 1개뿐이므로 어떤 모듈이 먼저 로드되어도 해당 모듈의 연결 파라미터를 읽을 수 있습니다.다른 하나는 "Could not resolve placeholder' jabber"와 같은 오류와 함께 예외를 발생시킵니다.호스트'
문제가 무엇인지 어느 정도 이해는 하지만, 해결책이나 사용 사례에 대한 베스트 프랙티스는 잘 모릅니다.
각 모듈이 자체 속성 파일을 로드할 수 있도록 설정하려면 어떻게 해야 합니까?현재 PropertyPlaceHolderConfigr을 별도의 컨텍스트 파일에서 이동하여 메인 응용 프로그램의 컨텍스트에 병합했습니다(모든 속성 파일을 하나의 PropertyPlaceHolderConfigr로 로드).dao 모듈을 사용하는 모든 사용자가 자신의 컨텍스트에 Property Place Holder Configurer가 필요하다는 것을 알아야 하기 때문에 이것은 매우 유감입니다.또한 dao 모듈의 통합 테스트 실패 등.
stackoverflow 커뮤니티의 솔루션/아이디어에 대해 알고 싶습니다.
관련된 각 컨텍스트에서 모든 플레이스 홀더가 확인할 수 없는 키를 무시하는지 확인하는 경우, 이러한 두 가지 접근 방식이 모두 작동합니다.예를 들어 다음과 같습니다.
<context:property-placeholder
location="classpath:dao.properties,
classpath:services.properties,
classpath:user.properties"
ignore-unresolvable="true"/>
또는
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:dao.properties</value>
<value>classpath:services.properties</value>
<value>classpath:user.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
</bean>
오래된 질문인 건 알지만ignore-unresolvable
왜 그런지 알 수가 없었어요
문제는 외부 자원(예:location="file:${CATALINA_HOME}/conf/db-override.properties"
)와ignore-unresolvable="true"
는 이 경우 작업을 수행하지 않습니다.
누락된 외부 리소스를 무시하기 위해 필요한 작업은 다음과 같습니다.
ignore-resource-not-found="true"
혹시 다른 사람이 이 일에 부딪힐까 봐.
여러 속성을 명시적으로 선언하는 대신 여러 요소를 가질 수 있습니다.Placeholder Configurer 빈.
콩에는 "properties"라는 대체 속성이 있습니다.어레이. "properties" 속성 대신 이 속성을 사용하여<array>
참조할 수 있습니다.
아래의 솔루션을 사용해 보았습니다만, 제 기계로 동작합니다.
<context:property-placeholder location="classpath*:connection.properties" ignore-unresolvable="true" order="1" />
<context:property-placeholder location="classpath*:general.properties" order="2"/>
스프링 컨텍스트에 여러 요소가 있는 경우 따라야 할 몇 가지 모범 사례가 있습니다.
해야 합니다. 속성 플레이스 속성 홀더 높은 순서를 뺀 순서는 """로 해야 .모든 속성 플레이스 홀더에서 마지막 순서(최고 순서)를 뺀 값
ignore-unresolvable=”true”
방법을 할 수 있도록
출처 : http://www.baeldung.com/2012/02/06/properties-with-spring/
언급URL : https://stackoverflow.com/questions/3403773/using-multiple-property-files-via-propertyplaceholderconfigurer-in-multiple-pr
'programing' 카테고리의 다른 글
Junit @Before/@After는 어떤 순서로 호출됩니까? (0) | 2022.10.07 |
---|---|
Ajax 요청이 200 OK를 반환하지만 성공 대신 오류 이벤트가 발생합니다. (0) | 2022.10.07 |
v-module 질문, 개체 어레이 목록의 날짜를 기준으로 날짜를 사용하지 않도록 설정하는 방법 (0) | 2022.10.07 |
Python Interpreter에서 업데이트된 패키지를 다시 가져오려면 어떻게 해야 합니까? (0) | 2022.10.07 |
동적 키를 사용하여 개체 만들기 (0) | 2022.10.07 |