在springboot中实现个别bean懒加载的操作_第1页
在springboot中实现个别bean懒加载的操作_第2页
在springboot中实现个别bean懒加载的操作_第3页
在springboot中实现个别bean懒加载的操作_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、在springboot中实现个别beaH赖加载的操作懒加载就是我们在spring容器启动的是先不把所有的bean都加载到spring容器中去,而是在当需要用的时候,才把这个对象实例化到容器中。Lazy在需要懒加载的bean上加上a就可以了补充知识:springboc组件懒加载的坑及加载规则什么是懒加载?懒加载的意思是不在项目启动的时候实例出来这个组件RestControllerpbiasspiontroertoireiobipeestappinggetstpbitringtestkobSkillImpl.print();returnWelcomeRustsexperience;首先这是个api

2、的代码RestControllerpublicclassApiControllerAutowiredSkillkobSkillImpl;RequestMapping(/getRust)publicStringtest()kobSkillImpl.print();returnWelcomeRustsexperience下面是服务的代码,我们构造函数输出一段内容以便我们知道它是什么时候加载的,我们使用了a注解,标记且启动懒加载ServiceLazypbiassoaipipeentsioaipsteotprintnoaoaiperriepbioiprintSystem.out.println(Ica

3、nKOA.js);ConoeEncpoirte10:01:15.3902020-0-142020-0-1418:01:15.3902020-0-1410:01:1599INFflINFDINFDINFD13日52138521385213852=f2020-0-1410:01:15.99INFO13052TainT.ainmainrainTainci5b已nb亡Htkd.tDnc赳t,TDTcmtWebSETQo、apache.catalina.core.StandardSerwicorgapache.catalina,coreStandardEngid.a.crctC.oncatJlocalh

4、ost4/1.s/Aeb.context.ContextLoaderLosdKoaSkillInpl2020-0-1418:01:15.64INFC-130522020-0-1418:01:15-79?INF1410:01:15.002INFD13052rainrainTaind.s,s.concurrenthreadPDolTaskExecuto.s.b/ft.enbeddedtoncat.IOTcatftebSercotzxk.rrissyou.XissyouApplication在这里就能看到,在项目启动的时候,这个组件就已经开始初始化了,这个说明什么?这个说明

5、iaz这个注解在现在是岀效的。那.的方案是解决方案是在ap层也要加个a,也就是说被调用方是懒加载,但是调用方不是懒加载,最终还不会执行懒加载。我们在ap层也加个a,执行项目发现没有初始化输出的内容了。那么,在懒加载的作用下,什么时候会初始化?我们请求一下api的接口,发现控制台已经产生输出,并且对这个类进行了实例化,也就是说懒加载只在使用的时候进行加载,项目启动的时候不会对类实例化。G-(3IccailiostftOM/cetrajst:或甲i/dJpC?e區苕S畧謬PTT8:ki-idk?tniou壬吟泸“说小打加対tcanf.siXig担胃ApiCcrtplleiafi毎-InteliJC

6、HEApeEdit阳!曲ig湘tode血碎罰farkyBuildBuiIccsVCSWridD#Bgirrtisau,I7naiLbl*ipfi石凸冲r.:piLontrDrrWt*k口ne?Rustrmn诂!importijiipartimparlimportLnportcard雪prin宜/卸arg.&prirgfr.an:artsprlrgfrah:flrgh&pnrgfran:orj印1*1叩理底CiteH垃*BceilACortrollerTtlMFflEr0h佃EkDIlEpI诗3躬kiUn甲CynonikihTflTEli2El(rJiElreRe:lQQrdBC*rdF“nMa

7、irDEMGMqin0升8矗崗1WatarKi!FirrKgcnM-an(i)aiestCoAtrollerGLd对pjblicclassApitonTr:a/ultjwLrcd1*4_mrn.ruSkillkjaSlcjll7mplSSeqaest/fappirigiptblicStrirgtestkMkUlmpth:retjmCelconApitorrtoiler2关于对service多实现类进行加载ServicepublicclassJavaSkilllmpIimplementsSkillOverridepublicvoidprint()System.out.println(lCanJa

8、va);ServiceLazypublicclassKoaSkilllmplimplementsSkillKoaSkilllmpl()System.out.println(LoadKoaSkillImpl);Overridepublicvoidprint()System.out.println(IcanKOA.js);ServicepublicclassPythonSkillImplimplementsSkillOverridepublicvoidprint()System.out.println(IcanPython);RestControllerLazypublicclassApiCont

9、rollerAutowiredSkillkoaSkillImpl;RequestMapping(/getRust)publicStringtest()koaSkilllmpl.print();returnWelcomeRustsexperience;a由&/iAwOS5-sBjrmn匕弓j.5ElCDiscleEidiwint2阳卜诙-H202-K話:腔0-抽-1百14:03i&2-f14:95:02+B1S:95;O2,SQ41:5:03,C0L1:B8:12.53LIB-03:12.531#2020-1-1LfisdKaafikillinplTeanKM.jsnroIMFCMFC1F0HF

10、GMra问1334Bmea123meei12J60123仙nalriinaininuin、Hiinnio-S8S0-exec:L(mic-83B0-Exef-l(nia-33Be-e:ec-l例子中有三个类,类都实现了ISkill接口,api中用的是KoaSkilllmpI,那么我命名成KobSkilllmpI行不行?当我们这样运行时,项目启动加载的时候是会报错了,其实服务名称是对不上,那么解决方法就是将这个命名改成类名的驼峰就是在service注解上加service(kobSkilllmpl)3我们看下autowired其实是对Api的注入是不?我们有两个主流的注入方法,一个是setter注入,一个是构造函数注入不是?那我们就可以使用构造函数注入的方式对api注入,取代Autowired这个注解RestControllerLazypublicclassApiControllerSkilljavaSkilllmpl;ApiController(SkilljavaSkilllmpl)this.javaSkilllmpl=javaSki

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论