簡體   English   中英

Spring從屬性文件中讀取@Bean類的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM