Đối với tất cả các môi trường của chúng tôi, dữ liệu cấu hình tồn tại trên các máy mục tiêu dưới dạng tệp thuộc tính.Chúng tôi sử dụng PropertyPlaceholderconfigurer từ SpringFramework để ràng buộc các thuộc tính này với ứng dụng của chúng tôi để giữ mọi thứ di động trong môi trường.
Ví dụ, miễn là tôi biết rằng /etc/myapp/database.properties sẽ có mặt trên bất kỳ máy ứng dụng của tôi sẽ được chạy trên, sau đó trong cấu hình mùa xuân của tôi, tôi chỉ cần một cái gì đó giống như vậy:
<bean id="myPropertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/etc/myapp/database.properties</value>
</list>
</property>
</bean>
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://${db.host}:3306/${db.name}" />
<property name="username" value="${db.user}" />
<property name="password" value="${db.pass}" />
</bean>
Có một loạt tùy chọn cho lớp Spring đó về nơi tệp thuộc tính có thể phát trực tiếp. Bạn thậm chí có thể làm cho họ thay thế và vượt qua chúng trong như biến môi trường:
<bean id="myPropertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="searchSystemEnvironment" value="true" />
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="locations">
<list>
<value>${database.configuration.file.url}</value>
</list>
</property>
</bean>
Và trong bash_profile (hoặc bất kỳ): JAVA_OPTS xuất khẩu = "-Ddatabase.configuration.file.url = file: /// etc/myapp/database.properties "
Hoặc chỉ tùy chọn -D được chuyển vào khi bạn gọi" java "tùy thuộc vào việc bạn đang làm.
FWIW, chúng tôi duy trì các tệp thuộc tính riêng lẻ dưới dạng RPM.
Bạn không chắc chắn tôi hiểu câu hỏi về các mô-đun? – Nicole
Chúng tôi không muốn giữ dữ liệu cấu hình trong thuộc tính hoặc tệp xml.Chúng tôi muốn tập trung dữ liệu này vào cơ sở dữ liệu. Vì vậy, tôi nghĩ về việc tạo ra một mô-đun riêng biệt trong ứng dụng của chúng tôi sẽ xử lý tất cả các công cụ cấu hình. – Shekhar
có vẻ như tôi đã quyết định không sử dụng các tệp thuộc tính dựa trên thứ gì đó mà bạn không nói cho chúng tôi biết. Bạn có thể cho chúng tôi biết lý do tại sao bạn muốn có các tệp cấu hình duy trì cơ sở dữ liệu không? Bạn sẽ vẫn cần phải có một cái gì đó bên ngoài chỉ đơn giản là để quản lý các thuộc tính cần thiết để thực hiện kết nối cơ sở dữ liệu. – Nicole