最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于@Component注解下的類無法@Autowired問題

 更新時(shí)間:2022年03月23日 15:17:34   作者:巴斯光甜  
這篇文章主要介紹了關(guān)于@Component注解下的類無法@Autowired問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@Component注解下類無法@Autowired

這個(gè)問題心累

在把我的一個(gè)非Web程序遷移從Spring遷移到SpringBoot時(shí),出現(xiàn)了在@Component注解下@Autowired的類為null的情況,也就是沒注入成功,或者說是此類在bean加載之前就被調(diào)用了。

試了各種辦法,修改掃描包,修改@Component注解等等,皆未成功,后來看到了一個(gè)方法,探究了一下。

@Component
public class ComponentClass {
? ? @Autowired
? ? private JedisClient jedisClient;
? ? public static ComponentClass componentClass;
? ? @PostConstruct
? ? public void init(){
? ? ? ? componentClass = this;
? ? ? ? componentClass.jedisClient = this.jedisClient;
? ? }
}
  • 聲明一個(gè)此類的靜態(tài)變量,用以保存bean。
  • 使用@PostConstruct注解,將需要注入的類添加到靜態(tài)變量中。
  • 接下來,使用這個(gè)靜態(tài)變量來調(diào)用注入類就行了。

@PostConstruct這個(gè)注解的具體作用就是:

注解在方法上,表示此方法是在Spring實(shí)例化該bean之后馬上執(zhí)行此方法,之后才會(huì)去實(shí)例化其他bean。

這樣在Spring實(shí)例化ComponentClass之后,馬上執(zhí)行此方法,初始化ComponentClass靜態(tài)對(duì)象和成員變量jedisClient。

@Component注解下@Autowired報(bào)錯(cuò)

這是由于 Springboot Bean 的加載機(jī)制所導(dǎo)致的,具體大家可以去研究源碼。

下面是我的解決方案

僅供參考

@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 形式調(diào)用
        return xxxConfig.redisUtil.set("abcd", "123456", 3600);
    }    
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

房山区| 齐齐哈尔市| 资兴市| 安丘市| 日喀则市| 鄂托克旗| 西平县| 镇远县| 水富县| 武清区| 铁岭市| 额尔古纳市| 新民市| 建德市| 定襄县| 阜新| 乐亭县| 乌拉特前旗| 二手房| 色达县| 红原县| 遂昌县| 安阳县| 天津市| 庆城县| 丽江市| 南通市| 宾川县| 新沂市| 富顺县| 伊吾县| 普格县| 库尔勒市| 宜川县| 板桥市| 盐边县| 通河县| 吴川市| 甘孜县| 玛多县| 玛沁县|