context:property-placeholder

4517 단어 #Spring
이것 은 spring 에서 설정 파일 에서 매우 자주 사용 합 니 다.
context:property-placeholder 는 우리 데이터베이스 설정 을 크게 편리 하 게 해 줍 니 다.
    spring          :?  ,  location           ,          src   ,           java           ,       ,  :

#jdbc  

test.jdbc.driverClassName=com.mysql.jdbc.Driver
test.jdbc.url=jdbc:mysql://localhost:3306/test
test.jdbc.username=root
test.jdbc.password=root

이렇게 하면 spring 에 설 정 된 bean 의 속성 값 을 설정 할 수 있 습 니 다.예 를 들 어 spring 에 jdbc 데이터 원본 의 클래스 DriverManager DataSource 가 있 습 니 다.
설정 파일 에서 이렇게 bean 을 정의 합 니 다:
이렇게 수정 하 는 것 도 편리 하고 통 일 된 이 규범 이다.
그리고 주의해 야 할 것 은 다음 과 같은 문제 가 발생 하면:
A 모듈 과 B 모듈 은 각각 자신의 Spring XML 설정 을 가지 고 있 으 며,각각 자신의 프로필 을 가지 고 있다.
A 모듈 의 Spring 프로필 은 다음 과 같 습 니 다.


   
   

conf/conf_a.properties:
modulea.jdbc.driverClassName=com.mysql.jdbc.Driver
modulea.jdbc.username=cartan
modulea.jdbc.password=superman
modulea.jdbc.url=jdbc:mysql://127.0.0.1:3306/modulea?useUnicode=true&characterEncoding=utf8

B 모듈 의 Spring 프로필 은 다음 과 같 습 니 다.
      
      
         
         
      
conf/conf_b.properties:
moduleb.jdbc.driverClassName=com.mysql.jdbc.Driver
moduleb.jdbc.username=cartan
moduleb.jdbc.password=superman
moduleb.jdbc.url=jdbc:mysql://127.0.0.1:3306/modulea?useUnicode=true&characterEncoding=utf8

A 모듈 을 단독으로 실행 하거나 B 모듈 을 단독으로 실행 하 는 것 은 정상 이지 만 A 와 B 두 모듈 을 통합 하여 실행 하면 Spring 용기 가 작 동 하지 않 습 니 다.
Could not resolve placeholder 'moduleb.jdbc.driverClassName' in string value "${moduleb.jdbc.driverClassName}"
원인:Spring 용 기 는 반사 스 캔 의 발견 체 제 를 사용 하여 Spring 용기 에 org.spring framework.beans.factory.config.Property Placeholder Configure 가 있 는 Bean 을 감지 하면 나머지 Property Placeholder Configure 에 대한 스 캔 을 중단 합 니 다.
spring 용기 중 최대 하나만 정의 할 수 있 습 니 다.
context:property-place holder,그렇지 않 으 면 그런 오류 가 발생 합 니 다.어떻게 위의 문 제 를 해결 합 니까?
A 와 B 모듈 제거
 

그리고 xml 다시 쓰기:


   
   
   

좋은 웹페이지 즐겨찾기