SpringBoot两种方式注入静态成员变量
set方法上添加@Autowired注解,类定义上添加@Component注解
- 静态变量的setter方法的static关键字要去掉,不然会注入失败。
@Component
public class RedisClient {
private static Logger logger= Logger.getLogger(String.valueOf(RedisClient.class));
private static RedissonClient redissonClient;
@Autowired(required = true)
public void setRedissonClient(RedissonClient redissonClient){
RedisClient.redissonClient=redissonClient;
logger.info("redisclinet注入完成!");
}
public static void setList(){
redissonClient.getList("one").add("two");
}
}
@PostConstruct方式实现
- @PostConstruct 注解的方法在加载类的构造函数之后执行,也就是在加载了构造函数之后,执行init方法。这种方式和在xml中配置 init-method和 destory-method方法差不多,定义spring 容器在初始化bean和容器销毁之前的所做的操作。
@Component
public class RedisClient1 {
@Autowired
private static RedissonClient redissonClient;
private static RedisClient1 redisClient1;
@PostConstruct
public void init() {
redisClient1 = this;
redisClient1.redissonClient= this.redissonClient;
}
}