Bạn có thể đề cập đến các thuộc tính biến của bạn trong một tập tin bất động sản và xác định Các tệp thuộc tính của môi trường cụ thể như local.properties, production.propertied, v.v.
Bây giờ dựa trên môi trường, một trong những tệp thuộc tính này có thể được đọc trong một trình lắng nghe được gọi lúc khởi động, như ServletContextListener.
Tệp thuộc tính sẽ chứa các giá trị môi trường cụ thể cho các khóa khác nhau.
mẫu "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
mẫu "sản xuất.tính chất"
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
[email protected]
Đối với sử dụng các thuộc tính tập tin, bạn có thể tận dụng nguồn tài nguyên như đề cập dưới đây
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 có thể được định nghĩa là các biến môi trường với các giá trị phù hợp với môi trường địa phương và sản xuất.
Với những thay đổi này, appplicationContext.xml sẽ có các thay đổi sau
<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}" />
Hy vọng điều này sẽ hữu ích.
java là gì ... -Denv = QA có nghĩa là gì? –
Bạn đặt giá trị thuộc tính hệ thống java. Bạn có thể đọc giá trị này trong mã như 'assert System.getProperty (" env ") ==" QA ";' – amra
Tôi nghĩ câu trả lời này không chính xác, điều này không cho phép đọc biến môi trường hệ thống. 'export', vv), nó chỉ cho phép đọc các thuộc tính hệ thống Java. – amoe