속성 파일에서 변수 속성을 언급하고 local.properties, production.propertied 등과 같은 환경 별 속성 파일을 정의 할 수 있습니다.
이제 환경을 기반으로 이러한 속성 파일 중 하나는 ServletContextListener와 같이 시작시 호출 된 리스너에서 읽을 수 있습니다.
속성 파일에는 다양한 키에 대한 환경 별 값이 포함됩니다.
샘플 "local.propeties"
db.logsDataSource.url=jdbc:mysql://localhost:3306/logs
db.logsDataSource.username=root
db.logsDataSource.password=root
db.dataSource.url=jdbc:mysql://localhost:3306/main
db.dataSource.username=root
db.dataSource.password=root
샘플 "production.properties"
db.logsDataSource.url=jdbc:mariadb://111.111.111.111:3306/logs
db.logsDataSource.username=admin
db.logsDataSource.password=xyzqer
db.dataSource.url=jdbc:mysql://111.111.111.111:3306/carsinfo
db.dataSource.username=admin
db.dataSource.password=safasf@mn
이러한 속성 파일을 사용하려면 아래와 같이 REsource를 사용할 수 있습니다.
PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer();
ResourceLoader resourceLoader = new DefaultResourceLoader();
Resource resource = resourceLoader.getResource("classpath:"+System.getenv("SERVER_TYPE")+"DB.properties");
configurer.setLocation(resource);
configurer.postProcessBeanFactory(beanFactory);
SERVER_TYPE은 로컬 및 프로덕션 환경에 적절한 값을 사용하여 환경 변수로 정의 할 수 있습니다.
이러한 변경으로 appplicationContext.xml은 다음과 같이 변경됩니다.
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="${db.dataSource.url}" />
<property name="username" value="${db.dataSource.username}" />
<property name="password" value="${db.dataSource.password}" />
도움이 되었기를 바랍니다 .