问题描述
- spring注解无法读取配置文件的属性,时间可以读取,求大神帮忙看看
-
//运用注解读取配置文件
@Component
@ComponentScan
@Configuration
@PropertySource({ "classpath:/info.properties" })
public class PropertiesResolve {
private static Logger logger = Logger.getLogger(PropertiesResolve.class.getName());
//把配置文件的属性值直接注解到类的属性里面
@Value("${mongodb.url}") //urlstatic String mongodbUrl;
@Value("${mongodb.name}") //namestatic String mongodbName;
@Value("${mongodb.password}") //passwordstatic String mongodbPassword;
@Bean public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() { return new PropertySourcesPlaceholderConfigurer(); }
@Scheduled(cron = "${time1}")
public static void test1(){
logger.info("1111111111111111111111111");
System.out.println("mongodbUrl的值: "+mongodbUrl);
System.out.println("mongodbName的值: "+mongodbName);
System.out.println("mongodbPassword的值: "+mongodbPassword);
}//*************************************************************************************
@Autowiredprivate static Environment env;
@Scheduled(cron = "${time2}")
public static void test2(){logger.info("2222222222222222222222"); System.out.println(env.getProperty("mongodb.url")); System.out.println(env.getProperty("mongodb.name")); System.out.println(env.getProperty("mongodb.password"));
}
}
配置文件内容:
##mongodbUrl##
mongodb.url = 127.0.0.1
##mongodbName##
mongodb.name= xs@tt.cok
##mongodbPassword##
mongodb.password= 1245sdsh
##time##
time1 = 0/20 * * * * ?
time2 = 0/58 * * * * ?test1方法输出:
mongodbUrl的值: null
mongodbName的值: null
mongodbPassword的值: nulltest2方法直接报错,错误为:java.lang.NullPointerException,
就算是static String mongodbUrl属性去掉static也是一样的错误,求大神帮忙
解决方案
spring读取配置文件
读取spring配置文件的位置
spring通过.PropertyPlaceholderConfigurer读取配置文件
解决方案二:
你的路径配置错误,要去掉文件名称前的/,如果有文件夹,直接是classpath:folder/xxx.properties.修正如下试试:
@PropertySource({ "classpath:info.properties" })