注入静态bean

spring boot 静态方法中想要使用注入的bean时,想当然的添加修饰符static,来修饰变量。
如下:
@Resource
private static RedisTemplate<String, Object> redis;
然而事实证明:并不可取。无法注入,注入结果为null。
应该采用以下方式:
1、将目前所在的类用@Component、@service、@controller(任选其一)注解进行标注,将此类标注成为应该bean对象。
2、新建一个同一类型的静态变量
private static RedisTemplate<String, Object> redisTemplate;
ps:redisTemplate不要注解
3、新建一个方法 方法名随意,使用@PostConstruct进行注释。

@PostConstruct
    private void inint() {
        redisTemplate = redis;
    }

PS:@PostConstruct注解相当于Servlet中的inint()方法,会在构造器之后,inint方法之前执行。
执行顺序为:
构造器(Constructor )>>@Resource(@Autowired)>>@PostConstruct>>inint()
因此 当@Resource依赖注入完成后会自动调用被@PostConstruct所注解的方法
4、当上述步骤完成后可在静态方法中调用redisTemplate 来使用RedisTemplate<String, Object>。

@Component
public class TestClient{
	@Resource
 	private   RedisTemplate<String, Object> redis;
 	
 	private static RedisTemplate<String, Code> redisTemplate;

    @PostConstruct
    private void inint() {
        redisTemplate = redis;
    }
    public static Boolean Test(String key){
    	   return redisTemplate .haskey(key);
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值