我有@SprintBootApplication
註釋的配置類,以及application.properties file
在我的類路徑(resources/application.properties
)與價值的根目錄下讀取不能讓春@Value地產注入工作
jmx.rmi.host="localhost"
然後我有一個單獨的這樣定義的組件嘗試@Value
注入這樣
@Component
class Props {
private Map props = [:]
boolean jmxEnabled
String host
@Autowired //test inject the env
Props (Environment env) {
jmxEnabled = env.getRequiredProperty("org.softwood.jmx", Boolean.class)
props[jmxEnabled]=jmxEnabled
}
void setHost (@Value ('${jmx.rmi.host}') String host) {
assert host
println "set host by injection"
this.host = host
props[host] = host
}
}
,因爲我是在「」嘗試@Value
我的第一個問題解決了 - GString的 - 失敗。所以轉換回'' - String和它的快樂。
在我的示例應用程序腳本 - 我得到春天的上下文,並得到一個rulesEngine bean,然後嘗試並得到我的示例Props bean。
使用autowired env的構造函數注入似乎工作。但是使用@Value
主機的方法注入沒有任何效果。當我嘗試斷言時,主機爲空,而不是我預期的'localhost'。
我簡單的東西,我沒有看到它,可以在任何點什麼我做錯了
PS:我想這對核心配置類 @PropertySource ("classpath:application.properties")
,並試圖界定這豆以及
@Bean
static PropertySourcesPlaceholderConfigurer propertyPlaceHolderConfigurer() {
return new PropertySourcesPlaceholderConfigurer()
}
很好,但沒有效果,我仍然使用獲得方法注入空@Value
任何幫助將受到歡迎
把它的制定者不會做任何事情,只需添加它的字段或構造。 –