2014-11-06 116 views
5

Vì vậy, điều này phải là một số sai lầm ngớ ngẩn, mà tôi đã không thể đi qua. Tôi đang cố gắng để bên ngoài tập tin thuộc tính của tôi, hiện đang được đặt trong nhà người dùng của tôi. Tôi đang tải tệp thuộc tính bằng cách sử dụng @PropertySource như thế này:Spring PropertyPlaceHolder Java Config tập tin thuộc tính bên ngoài

Nhưng thật không may, điều đó không tải tệp thuộc tính. Ném FileNotFoundException. Nhưng nếu tôi thay đổi đường dẫn đến:

@PropertySources(value = { @PropertySource("file:/home/rohit/.invoice/config.properties") }) 

hoạt động bình thường. Và đó là con đường mà con đường trước đó giải quyết. Tôi đã đăng nhập để xác minh. Vì vậy, có vẻ như với tôi rằng Spel không được đánh giá trong chú thích @PropertySource. Có phải nó phải hoạt động theo cách đó không?

Nếu có, thì có cách nào khác để đọc tệp thuộc tính bên ngoài, nằm trong /home/rohit không? Tôi không muốn đưa ra con đường tuyệt đối, vì những lý do hiển nhiên. Và tôi muốn tránh mở rộng lớp PropertyPlaceHolderConfigurer.

Một tùy chọn khác mà tôi đã thử đã thêm thư mục /home/rohit/.invoice vào đường dẫn lớp tomcat. Nhưng có vẻ như Spring không sử dụng System Classpath để giải quyết hậu tố classpath:. Bất kỳ con trỏ về điều này?

+1

Cụm từ này sẽ không hoạt động bằng cách sử dụng 'tệp: $ {user.home} /. Invoice/config.properties' thay thế. –

+0

@ M.Deinum Hãy để tôi thử điều đó .. –

+0

@ M.Deinum Ahaa !! Nó làm việc :) Đăng đó như là một câu trả lời, vì vậy tôi có thể chấp nhận nó :) –

Trả lời

3

Trong chú thích @PropertySoure Biểu thức EL sẽ không hoạt động. Bạn được phép sử dụng trình giữ chỗ ${...} tuy nhiên cũng bị giới hạn đối với biến hệ thống hoặc môi trường. Tuy nhiên khi bạn muốn giải quyết thư mục chính của người dùng, bạn có thể sử dụng trình giữ chỗ ${user.home}.

@PropertySource("file:${user.home}/.invoice/config.properties") 

Điều này sẽ hoạt động như mong muốn.

Các vấn đề liên quan