[英]Spring 3.0 @Value read from property file gettng exception on deployment
我正在嘗試構建一個Spring 3.0應用程序版本3.1.0.RELEASE,我想從其中讀取屬性文件,並在Component類中使用從中讀取的@Value注釋。 為此,我進行了以下更改:在mvc-dispatcher-servlet.xml中:
<context:property-placeholder location="classpath:mediamonitoring.properties"/>
組件類:
@Component
公共類SomeHelper {
@Value("${baseUri}")
private String baseUri;
public String getBaseUri() {
return baseUri;
}
public void setBaseUri(String baseUri) {
this.baseUri = baseUri;
}
}
屬性:
baseUri:http://localhost:8080/
並且我已經使用@Autowired注釋將此幫助程序類連接到@service類。 當我構建和部署應用程序時,出現以下錯誤:
java.lang.IllegalArgumentException: Could not resolve placeholder 'baseUri'
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:287)
有什么我想念的東西嗎,因為我只是遵循標准程序。
提前感謝您的幫助。
-瓦貝哈夫
使用=
代替:
作為分隔符
baseUri=http://localhost:8080/
無法發表評論,需要更多代表,因此請使用asnwer選項。 檢查您在哪里放置了mediamonitoring.properties。 我的意思是,檢查它是否在您的類路徑中
用=
替換:
並使用#
代替$
#{baseUri}
您也可以嘗試使用:
<util:properties id="props"
location="classpath:/yourproperties.properties" />
然后:
@Value("#{props['yourProperty']}")
假設您遵循使用ContextLoaderListener
和DispatcherServlet
的常規做法,請確保<context:property-placeholder location="classpath:mediamonitoring.properties"/>
處於正確的應用程序上下文中。 它將僅在相同應用程序上下文中的Bean上運行,而不在父或子上下文中的Bean上運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.