2012-03-01 33 views
6

Tôi đang làm việc trên một ứng dụng web Spring 3.0.5 truy cập LDAP và hai cơ sở dữ liệu. Tôi có một thuộc tính với thông tin cấu hình cho máy chủ LDAP và cơ sở dữ liệu đó, trong applicationContext-security.xmldispatcher-servlet.xml, nhưng tôi muốn làm cho nó sao cho mỗi máy chủ có thể có các thuộc tính dữ liệu khác nhau mà không thay đổi tệp trong WAR. Tôi có thể bằng cách nào đó đặt một tập tin ở một nơi khác trên máy chủ và vẫn truy cập nó từ bên trong ứng dụng của tôi không?Làm việc với các tệp thuộc tính bên ngoài chiến tranh với Spring

Trả lời

6

Thêm phần này vào ngữ cảnh của bạn

<context:property-placeholder location="${envfile}"/> 

này sẽ được tải các thuộc tính tập tin nằm ở $ {envfile}, một biến, bạn có thể thiết lập với paramater khởi động của Java như

này
-Denvfile="file:/var/server/environment.properties" 

Hoặc có thể trong tập lệnh khởi động của Tomcat

CATALINA_OPTS=" -Denvfile=file:/var/server/environment.properties" 

giá trị có thể được lấy trong bộ điều khiển của bạn sử dụng Springs Value chú thích như thế này:

@Values("${myvalue}") 
private String myValue; 

Xin lưu ý rằng các tính năng này đòi hỏi Xuân 3.1, thêm thông tin here

Chúc may mắn!

+0

Tôi đang sử dụng phiên bản Spring 4. Có vẻ như không có chú thích Giá trị. Sử dụng chú thích Giá trị không điền giá trị của tôi. Ngoài ra, tôi nhận được thông báo khi khởi động ứng dụng mà tệp thuộc tính đã được tải. 2017-04-05 17:27:51 THÔNG TIN PropertySourcesPlaceholderConfigurer: 172 - Tải tập tin thuộc tính từ URL [file: c: //java//resources//googleDocsValues.properties]. Bất kỳ đề xuất ? – Ankit

0

Hãy thử

<util:properties id="props" location="file:///path/to/server.properties"/> 
Các vấn đề liên quan