@Value("${redis.ip}")
private static String redis_ip;
@Value("${redis.port}")
private static int redis_port = 6379;
@PostConstruct
void init() {
// TODO
jedis = getJedis(redis_ip, redis_port);
}
入上图所示,init方法:redis_ip值总是为空
原因:PostConstruct 是在实例化之后,才会执行,而static在加载时就会赋值,这个时候 还没有拿配置文件的数据,导致为null。
解决方案:把变量的static修饰符去除,就可以了
本文探讨了在Spring Boot应用中使用@PostConstruct注解初始化静态成员变量时遇到的问题,即从配置文件读取Redis IP和端口信息时出现的延迟加载导致变量值为空的情况。文章详细解释了问题的根本原因,并提供了一个简单的解决方案,即将变量声明为非静态,从而避免了在类加载时尝试获取尚未存在的配置值。
462





