游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

spring学习笔记,一看就会,一篇文章带你深入spring

  前言
  学习过Spring框架的人一定都会听过Spring的IOC(控制反转)这个概念,对于初学Spring的人来说,总觉得IOC是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对SpringIOC的理解。IOC是什么
  IOCInversionofControl,即控制反转,不是什么技术,而是一种设计思想。在Java开发中,IOC意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好IOC呢?理解好IOC的关键是要明确谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了,那我们来深入分析一下:
  (1)谁控制谁,控制什么:传统JavaSE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建;谁控制谁?当然是IoC容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。
  (2)为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。
  用图例说明一下,传统程序设计如图,都是主动去创建相关对象然后再组合起来:
  当有了IOC的容器后,在客户端类中不再主动去创建这些对象了,如图所示:
  接下来我们说一下IOC的4个特性1。lazyInit延迟加载
  Bean对象的延迟加载(延迟创建)
  ApplicationContext容器的默认为是在启动服务器时将所有singletonbean提前进实例化。提前实例化意味着作为初始化过程的部分,ApplicationContext实例会创建并配置所有的singletonbean。完整版Java面试题地址:JAVA后端面试题整合1。1XML方式开启延迟加载:
  lazyinit配置bean对象的延迟加载,true或者falsefalse就是立即加载beanidlazyResultclasscom。lagou。edu。pojo。Resultlazyinitfalsebean复制代码复制代码
  我们先来看一下当lazyinitfalse也就是立即加载的时候:
  可以看到,在容器启动后,getBean之前,lazyResult这个bean已经存在了。
  然后我们把lazyinittrue,设置为true
  然后我们F8往下走一步:
  发现出现了lazyResult1。2注解开启延迟加载:
  Lazy:
  1。3全局配置defaultlazyinit:
  在bean的根标签中:
  应用场景:(1)开启延迟加载定程度提容器启动和运转性能(2)对于不常使的Bean设置延迟加载,这样偶尔使的时候再加载,不必要从开始该Bean就占资源2。FactoryBean和BeanFactory2。1BeanFactory
  容器的顶级接口,定义了容器的一些基础行为,负责生产和管理Bean的一个工厂,具体使用它下面的子接口类型,比如ApplicationContext2。2FactoryBean
  spring中的bean有两种
  普通bean
  工厂bean(FactoryBean)可以生产某一个类型的bean实例(返回给我们),也就是说我们可以借助于它自定义bean的创建过程。
  Bean创建的三种式中的静态法和实例化法和FactoryBean作类似,FactoryBean使较多,尤其在Spring框架些组件中会使,还有其他框架和Spring框架整合时使可以让我们自定义Bean的创建过程,完成复杂bean定义publicinterfaceFactoryBeanT{返回FactoryBean创建的实例,如果isSingleton返回true,则该实例会放到Spring容器的单例缓存池中MapNullableTgetObject()throwsException;返回FactoryBean创建的bean类型NullableClasslt;?getObjectType();返回作用域是否单例defaultbooleanisSingleton(){returntrue;}}复制代码复制代码2。2。1新建类CompanyFactoryBean,实现FactoryBean接口,并重写方法:publicclassCompanyFactoryBeanimplementsFactoryBeanCompany{privateStringcompanyInfo;注入公司名称,地址,规模以逗号分隔publicvoidsetCompanyInfo(StringcompanyInfo){this。companyInfocompanyInfo;}OverridepublicCompanygetObject()throwsException{创建复杂对象CompanyCompanycompanynewCompany();String〔〕splitcompanyInfo。split(,);company。setName(split〔0〕);company。setAddress(split〔1〕);company。setScale(Integer。parseInt(split〔2〕));returncompany;}OverridepublicClasslt;?getObjectType(){返回bean的类型returnCompany。class;}OverridepublicbooleanisSingleton(){是否是单例returntrue;}}复制代码复制代码publicclassCompany{privateStringname;privateStringaddress;privateintscale;省略getset和toString}复制代码复制代码2。2。2xml文件中配置beanbeanidcompanyBeanclasscom。lagou。edu。factory。CompanyFactoryBeanpropertynamecompanyInfovalue拉钩,中关村,500propertybean复制代码复制代码2。2。3测试org。junit。Testpublicvoidtest(){ApplicationContextapplicationContextnewClassPathXmlApplicationContext(applicationContext。xml);ObjectcompanyBeanapplicationContext。getBean(companyBean);System。out。println(companyBean);}结果返回的是Company{name拉钩,address中关村,scale500}复制代码复制代码
  虽然在xml配置文件中配置的bean的classcom。lagou。edu。factory。CompanyFactoryBean但是返回的Company类型。
  如何返回CompanyFactoryBean类型呢?
  3。后置处理器
  Spring提供了两种后处理bean的扩展接,分别为BeanPostProcessor和BeanFactoryPostProcessor,两者在使上是有所区别的。
  初始化(BeanFactory)Bean对象
  在BeanFactory初始化之后可以使BeanFactoryPostProcessor进后置处理做些事情
  在Bean对象实例化(并不是Bean的整个命周期完成)之后可以使BeanPostProcessor进后置处理做些事情
  注意:对象不定是springbean,springbean定是个对象3。1SpringBean生命周期图
  按照上述描述的打印一下。看看是否一致:实现了BeanNameAware、BeanFactoryAware、ApplicationContextAware、InitializingBean,DisposableBean接口publicclassResultimplementsBeanNameAware,BeanFactoryAware,ApplicationContextAware,InitializingBean,DisposableBean{privateStringstatus;privateStringmessage;省略getsettoString方法OverridepublicvoidsetBeanFactory(BeanFactorybeanFactory)throwsBeansException{System。out。println(4。BeanFactoryAware:beanFactory);}OverridepublicvoidsetBeanName(Stringname){System。out。println(3。BeanNameAware:name);}OverridepublicvoidsetApplicationContext(ApplicationContextapplicationContext)throwsBeansException{System。out。println(5。ApplicationContextAware:applicationContext);}OverridepublicvoidafterPropertiesSet()throwsException{System。out。println(7。InitializingBean);}publicvoidinitMethodTest(){System。out。println(8。initMethod);}PostConstructpublicvoidpostCoustrcut(){System。out。println(postCoustrcut);}销毁之前执行PreDestroypublicvoidpreDestroy(){System。out。println(销毁之前执行);}Overridepublicvoiddestroy()throwsException{System。out。println(DisposableBean);}}复制代码复制代码拦截实例化之后的对象(实例化了并且属性注入了)拦截所有的ComponentpublicclassMyBeanPostProcessorimplementsBeanPostProcessor{OverridepublicObjectpostProcessBeforeInitialization(Objectbean,StringbeanName)throwsBeansException{if(lazyResult。equalsIgnoreCase(beanName)){System。out。println(MyBeanPostProcessorbefore);}returnbean;}OverridepublicObjectpostProcessAfterInitialization(Objectbean,StringbeanName)throwsBeansException{if(lazyResult。equalsIgnoreCase(beanName)){System。out。println(MyBeanPostProcessorAfter);}returnbean;}}复制代码复制代码XML配置文件中:beanidlazyResultclasscom。lagou。edu。pojo。ResultinitmethodinitMethodTestbean复制代码复制代码测试:org。junit。TestpublicvoidtestBeanLazy(){ClassPathXmlApplicationContextapplicationContextnewClassPathXmlApplicationContext(classpath:applicationContext。xml);ObjectlazyResultapplicationContext。getBean(lazyResult);System。out。println(lazyResult);applicationContext。close();}复制代码复制代码
  打印出:
  4。其他:
  资料获取方式:关注小编转发文章私信【857】获取上述资料
  重要的事情说三遍,转发转发转发,一定要记得点赞转发哦!!!

夏天汗蒸好不好夏天坚持汗蒸有这些好处汗蒸是很受大家欢迎与喜爱的一种养生方式,很多人都会经常去汗蒸,汗蒸的好处非常多,对人体有很多得保健作用,一年四季都是可以汗蒸的。夏天汗蒸好不好好,夏天汗蒸是很有好处的,甚……守沪城堡旅行纪(二)过山车的一天有人说:有棱角的善良才是真善良,没有锋芒,没有棱角的人,很难在这个粗鄙的世界走得更远。窃以为:善良要留给懂得欣赏你的人。但是,世道的险恶也是从人性变坏开始的。2022年4……安徽平天湖风景区宛如七彩调色盘色彩斑斓的平天湖风景区。袁润博摄平天湖莲花台。袁润博摄航拍平天湖风景区湖光山色。袁润博摄初冬时节,安徽平天湖风景区宛如七彩调色盘。袁润博摄车辆穿梭在七彩……斯旺森益生菌怎么样?斯旺森益生菌好不好斯旺森益生菌是一款比较好的产品,很多人看到过,下面5号网的小编为你们介绍斯旺森益生菌怎么样?斯旺森益生菌好不好。斯旺森益生菌怎么样斯旺森正常人体肠道内栖息着100多种,数……76人不敌猛龙凸显两缺陷恩比德不防守,哈登被包夹里弗斯没办法76人不敌猛龙凸显两缺陷:恩比德不防守,哈登被包夹里弗斯没办法文姜诗华赛季开赛至今,有三支球队的表现很有喜剧效果,他们分别是西部的湖人以及东部的76人和篮网,赛季前……硫磺皂可以洗头吗?怎么用硫磺皂洗头硫磺皂对于油脂分泌旺盛,肌肤上有螨虫的问题有着很好的效果,用来洗脸非常不错哦!我们的头发也是油脂分泌的重灾区,那么,硫磺皂可以洗头吗?硫磺皂可以洗头吗硫磺皂是可以洗……swisse睡眠片有几种?助眠的有两种swisse睡眠片是效果很好的药品,很多人都认为这个是有两款的,下面5号网的小编为你们介绍swisse睡眠片有几种?助眠的有两种。swisse睡眠片有几种Swisse有两……八仙鼻通保质期多久?八仙鼻通可以说是泰国最经典的药之一了,很多人买很多放在家里备着,却不知道保质期,下面5号网的小编为你们介绍八仙鼻通保质期多久?八仙鼻通保质期多久泰国鼻通八仙筒产品名……前沿生物用科创内核构建全球化目标中证网讯(记者傅苏颖)10月28日,国内创新药领军企业前沿生物迎来在科创板上市两周年。上市以来,前沿生物在资本市场助力下,业绩稳步增长的同时,依托核心产品快速布局海内外市场,持……沙眼用什么眼药水?沙眼用什么药好?沙眼是一种需要好好治疗的疾病,很多人都不清楚沙眼用什么药治,下面5号网的小编为你们介绍沙眼用什么眼药水?沙眼用什么药好?沙眼用什么眼药水一旦发现沙眼应及时治疗。治疗方法可……冰硼散是什么?冰硼散是粉末吗?冰硼散很多人都有所耳闻,却没有见过,那么冰硼散到底是什么呢,下面5号网的小编为你们介绍冰硼散是什么?冰硼散是粉末吗?冰硼散是什么冰硼散的主要成分之一是硼砂,而硼砂功能主治……中国男篮战胜巴林正负值排名,顾全全队第一,一共3名球员是负分中国男篮以8067大胜巴林男篮,迎来了两连胜,提前晋级世界杯正赛,本场比赛,中国队打得比较艰难,巴林队的防守非常强硬,甚至出现不少违规动作,中国队有些不适应,巴林队外线三分投开……
2021中国古生物学十大进展3月10日上午,中国古生物学会在江苏南京发布2021年度中国古生物学十大进展评选结果。分别是:1。解锁东亚长时间尺度下古人群动态演变和适应性基因演化2。化石证据揭示苔藓动……口臭跟胃有关系吗去除口臭的最佳方法我们平时会经常闻到有人口臭,口臭是很令人困扰的一件事情,日常的人际交往沟通都造成了麻烦,造成口臭的原因有很多,去除口臭的方法也有很多,那么口臭跟胃有关系吗?去除口臭的最佳方法。……时髦妈妈在幼儿园门口接孩子,被当成奶奶,你也来接孙子?俗话说,年龄永远是一个女人的秘密。所以,千万不要随便问女人的年龄,因为她们永远年轻,永远十八岁。可女人们终究不能像《时光尽头的恋人》中的女主一样,因为一段离奇的遭遇而冻龄……TVB造型穷酸?一根发带走江湖,却是现在古偶剧拍马难及水平TVB到底有多穷酸?从一只用了30多年的公鸡碗就可以看出来不知大家有没有注意到,TVB的古装剧、时装剧、悬疑剧,管它什么剧,只要用到碗,亮相的总是带着大公鸡图案的那……健身狐臭会加重吗狐臭哪个季节最严重相信大家都有碰到过有狐臭的人,有狐臭的人只要站在她旁边就能闻得到,那么健身狐臭会加重吗,狐臭哪个季节最严重呢,来看看吧。健身狐臭会加重吗不会。人类的汗腺分小汗腺和大汗腺两……15分钟2金!中国总奖牌数破30太霸气,奖牌榜继续霸榜北京冬残奥会的比赛继续进行,第五个比赛日的比赛,在目前的奖牌榜上,中国队以8金8银11铜,总奖牌数27排名第一,乌克兰则是以6金7银4铜,总奖牌数17排名第二,加拿大5金2银6……为什么要多喝水呢多喝水有什么好呢大家在生活中应该都知道要多喝热水吧,但是你了解为什么呀多喝热水呢,今天小编就和大家一起来了解一下吧,究竟为什么要多喝水呢,以及多喝水有什么好呢,跟着小编我们一起来学习吧。为什么……加湿器里的水垢怎么去掉三招轻松去除水垢加湿器用久了不免会出现水垢,使用加湿器的时候加入少量白醋可以预防水垢,或者可以使用小刷子刷出加湿器里的水垢,或者可以更换震荡片,这样就不用去除水垢了。加湿器里的水垢怎么去掉……洗脸盆水垢如何去除洗脸盆水垢的清理办法在我们平时的日常生活中我们经常会发现洗脸盆用久了上面就会产生很多水垢,看着很恶心,很难擦拭干净,对于这个问题,下面小编就来教大家洗脸盆水垢如何去除?洗脸盆水垢的清理办法。洗脸盆……驼铃古道探驼铃,模式口里寻新春虎年新春至,冬奥圣火燃,疫情又反复,宅家保平安眼看到了春节,做了两年来的第二次核酸检测,吃了多年未有的热闹年夜饭,送领导回单位值班连续值了几天班的领导,终于可以休息……法国西班牙会师欧洲杯决赛施罗德空砍308北京时间9月17日,男篮欧洲杯结束了两场半决赛的争夺,两支拥有多名NBA球员的老牌劲旅法国与西班牙最终击败各自对手会师决赛,一起关注今日的比赛战况以及NBA球员的表现:【……colly胶原蛋白成分colly胶原蛋白成分解析大家都知道胶原蛋白能够丰胸,很多女性为了达到这一效果都是经常在吃胶原蛋白,colly胶原蛋白就是比较火的一款,下面介绍colly胶原蛋白成分colly胶原蛋白成分解析。coll……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网