2010-01-13 24 views
13

Thứ nhất: Tôi đang sử dụng Spring 3,0Làm thế nào tôi có thể tiêm một giá trị tài sản vào một chú thích cấu hình MVC mùa xuân 3,0 khiển

Tôi có một vấn đề khi cấu hình lớp điều khiển của tôi. Bộ điều khiển sử dụng dịch vụ web mà tôi muốn xác định địa chỉ điểm cuối bằng tệp .properties.

@Controller 
public class SupportController { 

    @Value("#{url.webservice}") 
    private String wsEndpoint; 

    ... 

Trong ứng dụng bối cảnh xml-file của tôi, tôi đã xác định điều này:

<context:property-placeholder location="/WEB-INF/*.properties" /> 

Tôi đã đọc các tài liệu hướng dẫn, cố gắng tiếp cận khác nhau (. Như thêm tiền tố systemProperties), nhưng Tôi tiếp tục nhận được một thông báo lỗi nói với tôi rằng nó không tồn tại.

Dòng hoặc tài sản 'url' không thể được tìm thấy trên đối tượng của loại 'org.springframework.beans.factory.config.BeanExpressionContext'


Ok. Tôi đã tìm ra nó.

Bây giờ, trong bộ điều khiển:

@Value("#{settings['url.webservice']") 

Sau đó, trong cấu hình bối cảnh Tôi có điều này "đậu helper":

<util:properties id="settings" 
location="/WEB-INF/supportweb.properties"></util:properties> 
+0

Trùng lặp: http://stackoverflow.com/questions/1741968/using-spring3-value-to-access-propertyplaceholderconfigurer-values – skaffman

Trả lời

11

này nên làm việc, quá:

@Value("${url.webservice}") 
private String wsEndpoint; 
2

bạn nên kiểm tra xem

<context:property-placeholder location="/WEB-INF/*.properties" /> 

được định nghĩa trong webmvc-config.xml nơi bạn tạo ra trường hợp của @Controllers

2

tôi có cấu hình này và nó hoạt động tốt:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="locations"> 
     <list> 
     <value>classpath:application.properties</value> 
     </list> 
    </property> 
</bean> 

và tôi iniejct tài sản theo cách này

@Value("${root.log.level}") 
private String prop; 

trường được khởi tạo chính xác thành giá trị "DEBUG".

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