属性文件没有加载spring boot

时间:2018-02-22 19:08:13

标签: spring-boot

我的属性文件是eclipse中src / main / resources中的位置在类路径中检查它 - 但是下面的类无法初始化env变量。有什么帮助吗?

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.data.solr.core.SolrTemplate;


@Configuration
@PropertySource(value = { "classpath:solr.properties" })
public class SolrConfig {

@Autowired
private Environment env;
private final static Logger logger = LoggerFactory.getLogger(SolrConfig.class);

@Bean 
public SolrClient solrClient() {
    if(env == null ) 
    { 
        logger.error("Property file not loaded!!!"); 
        System.exit(1); 
    }
    String servername = env.getProperty("solr.server");
    return new  HttpSolrClient.Builder(servername)
                      .build();

}

@Bean
public SolrTemplate solrTemplate(SolrClient client) throws Exception {
    return new SolrTemplate(client);
}
}

2 个答案:

答案 0 :(得分:0)

您的类注释是正确的,但请在您的方法中尝试以下操作:

Properties _properties = new Properties();
_properties.load(getClass().getClassLoader().getResourceAsStream("solr.properties"));
String servername = _properties.getProperty("solr.server");

答案 1 :(得分:0)

我相信你错过了PropertySourcesPlaceholderConfigurer注册。

来自@PropertySource的Spring文档:

  

为了解决定义中的$ {...}占位符或   使用PropertySource属性的@Value注释,必须   注册PropertySourcesPlaceholderConfigurer 。有时候是这样的   在XML中使用时自动,但是   使用时,必须使用静态@Bean方法显式注册   @Configuration类。

所以考虑注册这个bean:

   @Bean
   public static PropertySourcesPlaceholderConfigurer
     propertySourcesPlaceholderConfigurer() {
      return new PropertySourcesPlaceholderConfigurer();
   }