当前位置:   article > 正文

springboot项目在静态方法中注入bean对象_spring 静态方法中引用bean

spring 静态方法中引用bean

方法1:
利用set方法。首先声明一个静态属性(redisTemplate);
再写一个set方法,并添加Autowired注解,将传入的参数赋值静态属性。
当前类要加上注解@Component

private static RedisTemplate redisTemplate;

@Autowired
public void setRedisTemplate(RedisTemplate redisTemplate) {
    UserUtils.redisTemplate = redisTemplate;
}

//静态方法调用
public static String getValue(){
	return redisTemplate.opsForValue().get("wfCode");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

方法2:
声明一个静态的属性(加上注解@Autowired),一个非静态的属性。
声明一个返回值为void并且不能抛出异常的方法,在其中将非静态属性赋值给静态属性。该方法上加上注解@PostConstruct
给当前的类加上@Component

private static RedisTemplate redisTool;

@Autowired
private RedisTemplate redisTemplate;

@PostConstruct
public void init() {
    redisTool = redisTemplate;
}

//静态方法调用
public static String getValue(){
	return redisTool.opsForValue().get("wfCode");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

以上两种方式亲测有效,可以正常获取redisTemplate对象。
网上也有人给出其他的解决方法,但本人未测试,可参考。

方法3:
在springboot的启动类中,定义static变量ApplicationContext,利用容器的getBean方法获得依赖对象

1.在启动类中加入如下代码
在这里插入图片描述
2.使用时通过getBean方法来获取对象
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/798477
推荐阅读
相关标签
  

闽ICP备14008679号