2009-07-27 9 views
5

데이터베이스 연결, 작업 디렉토리, API 끝점 및 기타 등의 응용 프로그램 구성을 구문 분석하기 위해이 지루한 상투적 인 코드를 모두 지겨워합니다. Spring IoC는 멋지게 보이지만 내 응용 프로그램 사용자가 데이터베이스 URL을 편집하는 등 XML 파일을 수정하도록 강요한다. 이것은 다른 모든 배선 작업이 이루어지는 XML 파일에도 매우 분산되어있을 수 있습니다.응용 프로그램 구성 (봄?)

최종 사용자가 응용 프로그램 서버 내에서 실행되지 않는 서비스를 구성 할 수있게하는 가장 좋은 방법은 무엇입니까? 너 너희들은 무엇을 사용하니?

답변

10

XML의 명시 적 배선, 자동 배선 또는 그 조합을 사용하여 "상수"구성을 정의한 다음 나머지를 특성 파일에서 외부화하십시오. 이에 대한 일반적인 예로 데이터베이스 자격 증명이 있습니다.

기본 예제는 Spring and Ibatis Tutorial을 참조하십시오. 짧은 버전 : database.properties와

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="classpath:database.properties"/> 
</bean> 

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="${database.class}"/> 
    <property name="url" value="${database.url}"/> 
    <property name="username" value="${database.username}"/> 
    <property name="password" value="${database.password}"/> 
</bean> 

(클래스 패스에) :

database.username=scratch 
database.password=scratch 
database.class=oracle.jdbc.OracleDriver 
database.url=jdbc:oracle:thin:@localhost:1521:XE 
2

Spring XML 파일을 사용하여 애플리케이션을 빌드 할 수 있지만 속성 파일을 사용하여 이러한 구성 내에서 데이터베이스 URL 등을 제공해야한다는 것을 잊지 마십시오.

응용 프로그램을 빌드하는 일련의 XML 파일 세트가있는 경우 매우 잘 작동하며, 응용 프로그램의 개발, 테스트 또는 프로덕션 버전을 실행하는지에 따라 다른 특성 파일 세트를 제공하십시오.

5

속성 파일에 응용 프로그램 구성을 저장하고 PropertyPlaceholderConfigurer을 사용하여 해당 속성을로드 할 수 있습니다.

그래서, 당신의 애플리케이션 컨텍스트 파일에서,이있을 수 있습니다 : 귀하의 등록 정보 파일에서

<bean id="dataSource" class="com.x.y.z.DataSource"> 
    <property name="url" value="${dataSource.url}" /> 
</bean> 

가 dataSource.url 속성에서로드되는 것입니다.

이것은 내가 작업하고있는 응용 프로그램에서 사용하는 것이므로 훨씬 쉽게 구성 할 수 있습니다!

0

스프링 구성 파일을 모듈화 할 수 있습니다. 따라서 데이터베이스 커넥션을위한 하나의 XML 파일을 가질 수 있으며,이 파일은 중앙 스프링 설정 파일에 포함 (임포트)됩니다. 사용자가 내용을 수정할 수 있어야하는 경우 템플릿에서 XML 파일을 만들고 응용 프로그램 컨텍스트를 다시로드 할 수 있습니다.

2

IOC (XML, Java config, autowiring 등)에서 클래스를 연결하는 데 계속 사용할 수 있지만 여전히 데이터베이스 연결과 같은 배포에 따라 변경 될 수있는 값을 포함하는 속성 파일을 사용합니다.

PropertyPlaceholderConfigurer을 찾으십시오. 사용 방법에 대한 example의 블로그 게시물이 있습니다.

관련 문제