SpringBoot 项目在静态工具类中注入Spring所管理的bean
问题:静态属性不能直接注入
第一种方式使用@Autowired
public class Util{
private static RedisTemplate redisTemplate;
@Autowired
public void setRedisTemplate(RedisTemplate redisTemplate) {
Util.redisTemplate = redisTemplate;
}
}
第二种方式使用@Resource
public class Util{
private static RedisTemplate redisTemplate;
@Resource
public void setRedisTemplate(RedisTemplate redisTemplate) {
Util.redisTemplate = redisTemplate;
}
}
以上俩种需要将该工具类作为一个spring管理的bean,这个必须,不然无法注入成功。
只需要在该工具类上添加注解 @Component
@Component
public class Util{
private static RedisTemplate redisTemplate;
@Resource
public void setRedisTemplate(RedisTemplate redisTemplate) {
Util.redisTemplate = redisTemplate;
}
}
第三种方式直接使用 SpringContextHolder
public class Util{
private static RestTemplate restTemplate = SpringContextHolder.getBean(RestTemplate.class);
}