คุณสามารถกล่าวถึงแอ็ตทริบิวต์ตัวแปรของคุณในไฟล์คุณสมบัติและกำหนดไฟล์คุณสมบัติเฉพาะสภาวะแวดล้อมเช่น 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}" />
หวังว่านี่จะช่วยได้