[英]Spring: Bean fails to read off values from external Properties file when using @Value annotation
[英]Spring read values for @Bean class from properties file
我正在嘗試僅使用注釋來創建Spring bean。 我無法從屬性文件加載@Bean類的值。
這是我的代碼:
這是我的主班
public class AnnotationDI {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(ConfigurationProvider.class);
ApplicationProperties properties = (ApplicationProperties)context.getBean(ApplicationProperties.class);
System.out.println(properties);
}}
配置類
@Configuration
public class ConfigurationProvider {
private ApplicationProperties m_applicationProperties;
@Bean
public ApplicationProperties getApplicationProperties() {
return new ApplicationProperties();
}
}
豆類
@PropertySource(value = { "classpath:application.properties" })
public class ApplicationProperties {
@Value("${longThreadCount}")
private String m_longProcessThread;
@Value("${routeTimeout}")
private String m_routeTimeout;
@Value("${updateDirectoryPath}")
private String m_updateDirectoryPath;
public String getLongProcessThread() {
return m_longProcessThread;
}
@Override
public String toString() {
return "ApplicationProperties [m_longProcessThread=" +m_longProcessThread"]";
}
}
當我運行該程序時,得到以下輸出
m_longProcessThread = $ {longThreadCount}
知道我在做什么錯嗎?
為了能夠使用占位符解析@Value
,您需要注冊PropertySourcesPlaceholderConfigurer
。 由於這是BeanFactoryPostProcessor
因此需要將其注冊為static
bean,以便可以在流程的早期發現它。
@Bean
public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
@PropertySource
批注必須與@Configuration
批注結合使用,像這樣,
@Configuration
@PropertySource(value = { "classpath:application.properties" })
public class ApplicationProperties {
...
}
在這種情況下,添加@Configuration
批注將解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.