我的属性文件是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);
}
}
答案 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();
}