纠纷奇闻作文社交美文家庭
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

踩坑DependsOnOrder注解嵌套使用解决Bean加载

9月21日 乱人心投稿
  踩坑:PostConstruct、DependsOn、Order注解嵌套使用案例
  今天在工作中写需求代码时,遇到的一个关于SpingBean对象加载优先级问题,结合了Spring源码,大概总结了一下遇到Bean加载顺序需求问题时,比较常用的3个注解:PostConstruct、DependsOn、Order。一、Order注解的作用Order注解的作用是定义SpringIOC容器中Bean的执行顺序的优先级。
  使用案例:ComponentOrder(0)publicclassTest01{。。。}ComponentOrder(1)publicclassTest02{。。。}ComponentOrder(2)publicclassTest03{。。。}复制代码
  如上述代码所示,通过Order注解定义优先级,3个Bean对象从IOC容器中的加载顺序为:Test01、Test02、Test03。二、PostConstruct注解的作用PostConstruct注解可以用于修饰一个非静态的、返回值类型为void的方法(eg:myInit())。该方法(myInit())会在服务器加载Servlet的时候被执行,且只会被执行一次!该方法(myInit())的调用执行在构造函数之后,在Servlet的init()方法之前,在Servlet的destroy()方法之后。
  使用案例:ComponentpublicclassTest{PostConstructprivatevoidinit(){初始化System。out。println(World!);}publicTest(){System。out。println(Hello);}}复制代码
  输出结果:HelloWorld!复制代码三、DependsOn注解的作用该注解的作用顾名思义,就是谁依赖谁。假如在Test02类上加上DependsOn(valuetest01),那么就说明Test02在加载时,要依赖于Test01,SpringIOC容器会优先加载Test01,然后再加载Test02。
  举个实际业务场景的案例,假设现在有2个类Test01、Test02,需要交给SpringIOC容器托管:Test01是一个拥有1个静态变量的类ComponentpublicclassTest01{该静态变量的属性值需要通过Spring容器赋值,值(hello)定义在application。properties中。注意:Value注解不可以给静态变量注入属性值(否则获取的注入结果为null)!因此HELLO的属性值注入要在setter方法上加上Value注解,参考文章:【https:blog。csdn。netweixin43591980articledetails121503720】publicstaticStringHELLO;publicstaticStringWORLD;Value({spring。test。hello})值为hellopublicvoidsetHELLO(Stringhello){HELLO}Value({spring。test。world})值为worldpublicvoidsetWORLD(Stringworld){WORLD}}复制代码
  再来看Test02类的代码(前提要求:Test02类需要在我们的SpringBoot项目启动时首先被初始化调用!):Test02拥有一个PostConstruct注解修饰的init()初始化方法和无参构造函数ComponentpublicclassTest02{PostConstructpublicvoidinit(){。。。}publicTest02(){。。。}}复制代码
  业务需求:我需要在Test02的无参构造方法加载时,控制台打印Test01类中的HELLO静态变量值,然后在init()方法执行时,控制台打印Test01类中的WORLD静态变量值。
  刚开始我的第一想法是,直接这样写就好了:PostConstructpublicvoidinit(){System。out。println(Test01。HELLO);}publicTest02(){System。out。println(Test02。WORLD);}复制代码
  但是最终控制台打印的结果为:nullnull复制代码
  Why?为什么是这个结果?因为,Test02类会在我们的SpringBoot项目启动时首先被初始化调用,也就是说IOC容器会首先去加载Test02对象,而这时候Test01还尚未被加载到容器中,这时候Test01中的两个静态变量HELLO、WORLD还没有通过Value注解注入属性值,所以结果理所应当是输出null
  解决方案:使用DependsOn注解
  我们对Test02类进行改进:ComponentDependsOn(valuetest01)通过该注解,向Spring容器声明,该类的加载需要依赖于Test01,当加载Test02时,要先去加载Test01!publicclassTest02{PostConstructpublicvoidinit(){System。out。println(Test01。HELLO);}publicTest02(){System。out。println(Test01。WORLD);}}复制代码
  查看打印结果:helloworld复制代码
  注:也可以使用Order注解给Test01、Test02类声明加载优先级,优先加载Test01,然后再加载Test02!
搜索 投诉 评论 转载

学金融选邦德,抢占先机享受行业前沿科技了解一个行业的最佳方式莫过于沉浸其中,使用行业专家所使用的技术和设备,以专业人士的视角去体验和感受。如果你想成为金融领域的专家精英,特别是如果你想在步入职场前熟知当前最先……盘点忽悠投资人的互联网黑话将简单的问题复杂化,将平白的回答高端化,是互联网管理者必备的技能之一。虽然会存在意思传达不明确,领导理解费力,下属执行产生内耗等弊端,但丝毫不影响在投资人和领导面前提高逼格。下……罪名分析妨害安全驾驶罪【刑法修正案十一】妨害安全驾驶罪一、修正前后条文对比修正前修正后无第一百三十三条之二【妨害安全驾驶罪】对行驶中的公共交通工具的驾驶人员使用暴力或者抢控驾……大电池67W快充已成定局,RemiK40游戏版这次真的成了现如今,手机行业百花齐放,各家厂商更新新机的节奏也愈发频繁,尤其是小米,2021年还未过半就已经推出了近10款新机,每一款也都各有特色,这也让越来越多的消费者对小米颇具好感。对……踩坑DependsOnOrder注解嵌套使用解决Bean加载踩坑:PostConstruct、DependsOn、Order注解嵌套使用案例今天在工作中写需求代码时,遇到的一个关于SpingBean对象加载优先级问题,结合了Spr……付款方和实际购买方不一致,发票应该开给谁?提问:付款方和实际购买方不一致,发票应该开给谁?回复:销售商品、提供服务以及从事其他经营活动的单位和个人,对外发生经营业务收取款项,应按照时间业务由提供服务一方向接受服务……奇瑞新款代步小车,QQ冰淇淋最新信息曝光,续航120170公虽然奇瑞小蚂蚁在微型电动代步小车市场算是销量不错的一款车型了,但是随着五菱宏光MINI的上市,其月均超过3万台的销量完全抢了小蚂蚁的风头。于是奇瑞即将推出针锋相对的车型,全新的……我现在在做出纳,但集团总部正在筹划财务共享中心,我想问下成立财务必不可少,只是原来配备数量会减少,仅此而已,就看你是不是精兵强将。建立财务共享中心后,现有岗位可能是会消失哦。但共享中心会有大量新的岗位,只是工作范围回产生变化。比如……Syrius炬星联合所托瑞安打造柔性生产线配送物流工人日报中工网记者窦菲涛近日,国内最早专注AMR(自主移动机器人)的Syrius炬星与国内商用车智能驾驶领军企业所托瑞安达成合作,共同打造基于AMR的柔性生产线配送物流,……手机停机多久后会被销号?两个月,销号后机主如果还想再用,只能带着身份证到营业厅补齐所欠费用,当然,如果这个号码特别好,就不好说了,或者被投放到号码池,可能会被其他用户所购买,但是投放号码池不会那么快!……企业如何进行数字化转型?企业如何进行数字化转型?从哪几个方面下手?具体怎么做?相信很多企业都在不停的打问号!是的,很多人都知道企业能成功进行数字化转型的话,必定能给企业带来巨大的好处,但是却不知……加量不加价的高颜值新旗舰撸妹评KineraBaldr2曙光前言在北欧神话之中,Baldr是光明之神,是象征光明的太阳的化身。而在Kinera世界之中,Baldr是旗舰产品,有不错的产品力。虽说神话之中的Baldr未能在诸神黄昏之……
国产打印机历经十一年,新的打印机市场定位在哪里?币圈事件GenesisDigitalAssets购买了200在Mac电脑上iCloud如何设置家人共享?京东品质购物节火爆开启,电脑数码一站式以旧换新省心更省钱AI如何让视频更智能?它以我们想象不到的方式存在js防抖与节流倾听你的心跳跟随你的步伐,陪你安然入梦运动手环的功能实现砸下近千亿上下游布局,宁德时代的野心可不止是电池霸主无数个苟晶背后,对农村孩子而言,高考公平就是个笑话探索绿色金融科技运营模式陆金所控股助力小微高质量发展你带着雷朋就让娃裸眼出门?100防紫外线儿童太阳镜,选它!899元飞利浦IPS电竞显示器!我要剃须刀你却给我无线耳机?
“冰泉”情谊:暧昧很远,温暖很近朱维铮:清代捐班的“花样”中医治疗婴儿鹅口疮的方法剖腹产上环的最佳时间朗诵比赛的主持稿不同脸型的烫发发型选择一款适合自己的发型才是真理枞阳寓楼历史笑话家常菜之双色苋菜蛋卷饼的做法详解守株待兔的故事守株待兔的寓意是什么穷可以让一个男人自卑到什么程度丹噶尔古城汉藏茶马互市之都

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形