今天本想使用@Value的方式使类中的变量获得yml文件中的配置值,然而一直失败,获得的一直为null。
类似于这样写的。
public class RedisShardedPool {
private static ShardedJedisPool pool;//sharded jedis连接池
@Value("redis.max.total")
private static Integer maxTotal;
……
}
后来发现是因为这个变量是static的,而spring不支持依赖注入值到静态变量。
然后看到有人通过setter注入实现,如下
@Component
public class TestValue {public static String maxTotal;
@Value("${redis.max.total}")
public void setDatabase(String maxTotal) {
TestValue.maxTotal= maxTotal;
}
}
于是我也改成这种样子的,但是还是获得不到值,因为我没在类上加@Component注解(或者类似的注解),所以spring扫描不到,也就识别不出,@Value还是会得到null。由于我这个是工具类,里面都是static方法,调用时也都是调用类方法,所以也不需要申明为component,也不需要通过@Autowired或者@Resource调用。而且,由于这个类里面是static方法和属性,也不能通过调用其他非static的属性和方法的方式来获得值。故放弃这种实现,只好自己写一个读取配置文件的工具类,通过调用配置文件工具类类方法来解析配置文件中数据。