PropertyPlaceholderConfigurer
là câu trả lời , nhưng tôi sẽ tưởng tượng rằng bạn muốn điều này xảy ra mà không cần phải cập nhật tệp thuộc tính của bạn cho từng môi trường.do đó
Đề nghị của tôi sẽ như sau
- Sử dụng
PropertyPlaceholderConfigurer
, nhưng không tạo ra một thuộc tính tập tin
- Theo mặc định,
PropertyPlaceholderConfigurer
cố gắng đầu tiên để tìm một giá trị trong một thuộc tính tập tin, nhưng nếu thất bại, nó sẽ tìm kiếm một trong system properties
vì vậy, tất cả các bạn cần làm là để xác định cả đậu cùng một cách mà bạn đang làm việc đó, tức là dev
và stag
.. đó là một cách tiếp cận tốt vì bạn đang hiển thị rõ ràng các cấu hình khác nhau ... nó sẽ giúp ích nếu bạn cũng thêm một số bí danh để hiển thị rõ ràng cài đặt bạn muốn sử dụng.
Tiếp theo, chuyển vào thuộc tính hệ thống xác định chế độ bạn đang ở ... và lý tưởng đặt rõ ràng PropertyPlaceholderConfigurer
để sử dụng Thuộc tính hệ thống.
Vì vậy .. cấu hình của bạn sẽ trông như thế này
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
systemPropertiesMode="2"/>
<bean id="Mybean" class="Bean">
<property name="config" ref="${launch.mode}"/>
</bean>
<bean id="dev" name="dev_mode" class="Dev">
<property name="x" ref="Dev1">
<property name="y" ref="Dev2">
<property name="z" ref="Dev3">
</bean>
<bean id="stag" name="staging_mode" class="Dev">
<property name="x" ref="Stag1">
<property name="y" ref="Stag2">
<property name="z" ref="Stag3">
</bean>
Sau đó bạn có thể vượt qua trong bất động sản khi khởi động trong thời trang sau
-D<property-name>=<value>
Vì vậy, trong trường hợp này bạn muốn sử dụng
-Dlaunch.mode=dev_mode
Hoặc
-Dlaunch.mode=staging_mode
Và bạn sẽ không cần phải chạm vào bất kỳ tệp cấu hình nào.
Chỉ cần một lưu ý thêm về systemPropertiesMode
, các giá trị được chấp nhận như sau:
- 0 - không bao giờ nhìn vào thuộc tính hệ thống
- 1 - thuộc tính hệ thống sử dụng như một dự phòng (tức là nếu không tìm thấy trong các tập tin thuộc tính)
- 2 - thuộc tính hệ thống luôn ghi đè lên (chế độ tôi đang đề nghị)
Hy vọng nó sẽ giúp :)
Lưu ý: Đề xuất này chỉ áp dụng cho Spring < 3.1, kể từ từ 3.1 trở đi, cách tiếp cận được khuyến nghị là sử dụng @Profile
Nguồn
2012-02-07 21:14:49
Không có thứ gì như Spring 2.1. Có 2.0 và 2.5. Ý bạn là 3.1? – skaffman
Bạn đang sử dụng Maven? –