[SPRING] context : property-placeholder가 참조를 해석하지 않습니다.
SPRINGcontext : property-placeholder가 참조를 해석하지 않습니다.
classpath의 루트에 다음 applicationContext.xml 파일이 있습니다.
<context:annotation-config />
<context:property-placeholder location="classpath:props/datasource.properties" />
<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource"
p:username="${jdbc.username}"
p:password="${jdbc.password}"
p:url="${jdbc.url}"
p:driverClassName="${jdbc.driverclass}"
p:validationQuery="SELECT sysdate FROM dual" />
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
p:dataSource-ref="datasource"
p:mapperLocations="classpath:mappers/*-mapper.xml" />
<tx:annotation-driven transaction-manager="txManager" />
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="datasource" />
<bean id="mappeScannerConfigurere" class="org.mybatis.spring.mapper.MapperScannerConfigurer"
p:sqlSessionFactory-ref="sqlSessionFactory"
p:basePackage="com.mypackage" />
props / datasource.properties도 classpath의 루트에 다음과 같은 내용으로 존재합니다.
jdbc.url=myjdbcurl
jdbc.driverclass=myClass
jdbc.username=myUserName
jdbc.password=myPassword
Spring 관리 테스트에서 다음 주석을 통해 앞에서 언급 한 applicationContext.xml을 사용하도록 선언합니다.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
테스트 메소드를 호출하면 봄부터 다음 오류가 발생합니다.
org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class '${jdbc.driverclass}'
sping이 jdbc.driverclass에 대한 참조를 해결하지 못한다는 것을 이해합니다. 나는 무엇을 잘못 했는가?
추신 : 봄 3.2.3.RELEASE 사용하고 있습니다.
**
**
아마도 MapperScannerConfigurer에 문제가있을 수 있습니다. 그것은 BeanDefinitionRegistryPostProcessor이고 Javadoc은 말합니다 :
따라서 MapperScannerConfigurer는 sqlSessionFactory를 통해 BeanFacoryPostProcessor (
두 시간의 조사 끝에 해결책을 찾았습니다.
앞서 말했듯이 MapperScannerConfigurer는
해결법
-
==============================
1.나는 똑같은 문제를 안고이 게시물을 보았지만 maks와 같은 방식으로 해결할 수 없었다. 결국 나를 위해 일한 것은 ignoreUnresolvablePlaceholders 속성 값을 true로 설정하는 것이 었습니다.
나는 똑같은 문제를 안고이 게시물을 보았지만 maks와 같은 방식으로 해결할 수 없었다. 결국 나를 위해 일한 것은 ignoreUnresolvablePlaceholders 속성 값을 true로 설정하는 것이 었습니다.
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>classpath:database.properties</value> </property> <property name="ignoreUnresolvablePlaceholders" value="true"/> </bean>
나는 Spring 3.2.3.RELEASE도 사용하고있다. 이 게시물은 4 개월 이상 된 것으로 알고 있지만 누군가 유용하다고 생각했습니다.
-
==============================
2.짧은 형식 : 구현을로드하는 적절한 방법은 무엇입니까? BeanDefinitionRegistryPostProcessor?
짧은 형식 : 구현을로드하는 적절한 방법은 무엇입니까? BeanDefinitionRegistryPostProcessor?
펼친 양식 : 빈이 생성되기 전에 BeanDefinitionRegistryPostProcessor를로드 할 수있는 방법이 있습니까? javadoc을 보면 :
따라서 bean 정의가 생성되었을 때, 그러나 bean이 생성되기 전에로드되도록되어 있습니다. 우리가 응용 프로그램 xml에서 일반 빈으로 만들면 처음에는이 빈을 갖는 목적을 상실합니다.
from https://stackoverflow.com/questions/17512596/contextproperty-placeholder-doesnt-resolve-references by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] SimpleUrlHandlerMapping의 Java 구성 (스프링 부트) (0) | 2019.03.21 |
---|---|
[SPRING] 스프링 MVC에서 RESTful 삭제를 처리하는 방법 (0) | 2019.03.21 |
[SPRING] 봄 보안 (3.0.x) 및 사용자 가장 (0) | 2019.03.21 |
[SPRING] 스프링 부트 - 오류 처리 (0) | 2019.03.21 |
[SPRING] 자바 8 잭슨 검증 (0) | 2019.03.21 |