2011-08-20 34 views
23

Một câu hỏi đơn giản về tiêm Spring từ tệp thuộc tính cho thuộc tính cuối cùng.Tiêm thuộc tính mùa xuân trong thuộc tính cuối cùng @Value - Java

Tôi có một tập tin thuộc tính mà tôi muốn lưu trữ một đường dẫn tập tin trong Thông thường khi tôi sử dụng file tính tôi thiết lập thuộc tính lớp sử dụng một cái gì đó như thế này:.

private @Value("#{someProps['prop.field']}") String someAttrib ; 

Sau đó, trong tôi spring.xml tôi sẽ có cái gì đó như :

<util:properties id="someProps" 
    location="classpath:/META-INF/properties/somePropFile.properties" /> 

Điều này hoạt động tốt, đơn giản và tạo mã đẹp và gọn gàng. Nhưng tôi không chắc chắn mô hình gọn gàng nhất để sử dụng khi cố gắng tiêm các giá trị thuộc tính vào các thuộc tính lớp cuối cùng là gì?

Rõ ràng cái gì đó như:

private static final @Value("#{fileProps['dict.english']}") String DICT_PATH; 

sẽ không hoạt động. Có cách nào khác không?

Chúc mừng!

+2

Không, hai cách tiếp cận không tương thích. – skaffman

Trả lời

24

Cách duy nhất bạn có thể đưa các giá trị vào trường cuối cùng là thông qua Constructor Injection. Mọi thứ khác sẽ là một hack khủng khiếp trên mặt của Spring.

+1

Có ví dụ về điều này không? – wheeler

0

Nếu bạn đang tìm kiếm một ví dụ:

public class Test { 


    private final String value; 
    public Test(@Value("${some.value}") String value){ 
     this.value=value; 
     System.out.println(authURL); 
    } 
    } 
Các vấn đề liên quan