Python 官方文档:入门教程 => 点击学习
目录@Component注解下类无法@Autowired这个问题心累@Component注解下@Autowired报错下面是我的解决方案@Component注解下类无法@Autowi
在把我的一个非WEB程序迁移从spring迁移到SpringBoot时,出现了在@Component注解下@Autowired的类为null的情况,也就是没注入成功,或者说是此类在bean加载之前就被调用了。
试了各种办法,修改扫描包,修改@Component注解等等,皆未成功,后来看到了一个方法,探究了一下。
@Component
public class ComponentClass {
@Autowired
private JedisClient jedisClient;
public static ComponentClass componentClass;
@PostConstruct
public void init(){
componentClass = this;
componentClass.jedisClient = this.jedisClient;
}
}
@PostConstruct这个注解的具体作用就是:
注解在方法上,表示此方法是在Spring实例化该bean之后马上执行此方法,之后才会去实例化其他bean。
这样在Spring实例化ComponentClass之后,马上执行此方法,初始化ComponentClass静态对象和成员变量jedisClient。
这是由于 Springboot Bean 的加载机制所导致的,具体大家可以去研究源码。
仅供参考
@Component
public class XxxConfig {
// 1
public static XxxConfig xxxConfig ;
@Resource
private RedisUtil redisUtil;
// 2
@PostConstruct
public void init() {
xxxConfig = this;
xxxConfig.redisUtil = this.redisUtil;
}
public boolean test() {
// 3.使用 JwtConfig.redisUtil 形式调用
return xxxConfig.redisUtil.set("abcd", "123456", 3600);
}
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: 关于@Component注解下的类无法@Autowired问题
本文链接: https://lsjlt.com/news/143621.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0