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

Java编程Springclasspath扫描和组件管理(上

  这里是offer学院,帮你轻松拿offer
  嗨大家好,我是学长!今天的你过得还好吗?
  2022。11。30
  本文章为【Spring】classpath扫描和组件管理相关知识,下边将对Component和及其派生出的其他注解,自动检测类和注册beanDifination,组件命名,为自动检测组件提供scope,使用过滤器自定义扫描,在组件中定义Bean元数据等进行详尽介绍
  本节我们可以通过【扫描类路径】隐式检测候选组件。【候选组件】指的是通过扫描筛选并在容器中注册了相应beanDifination的类。这样就不需要使用XML来执行bean注册。相反,你可以使用注解(例如,【Component】)。从Spring3。0开始,SpringJavaConfig项目提供的许多特性都是核心Spring框架的一部分。这允许你使用Java而不是使用传统的XML文件来定义bean。
  一、Component
  Component和及其派生出的其他注解:Component是任何spring管理组件的通用注解。Repository、Service和Controller是【Component】用于更具体用例的注解(分别在持久性、服务和表示层中)。这些注解对于我们后期对特定bean进行批量处理时是有帮助的。
  二、检测类和注册
  自动检测类和注册beanDifination:
  Spring可以自动检测类的信息,并将相应的【BeanDefinition】实例注册到【ApplicationContext】中。例如,以下两个类适合这样的自动检测:ServicepublicclassSimpleMovieLister{privateMovieFindermovieFinder;publicSimpleMovieLister(MovieFindermovieFinder){this。movieFindermovieFinder;}}RepositorypublicclassJpaMovieFinderimplementsMovieFinder{implementationelidedforclarity}
  要自动检测这些类并注册相应的bean,你需要将【ComponentScan】添加到你的【Configuration】类中,其中【basePackages】属性是这两个类的公共父包。说人话就是:指定一个包名,自动扫描会检测这个包及其子包下的所有类信息。ConfigurationComponentScan(basePackagesorg。example)publicclassAppConfig{。。。}
  为简单起见,前面的示例可能使用了注解的value属性(即ComponentScan(org。example))。
  当然我们可以使用以下XML代替,他们是等效的:lt;?xmlversion1。0encodingUTF8?beansxmlnshttp:www。springframework。orgschemabeansxmlns:xsihttp:www。w3。org2001XMLSchemainstancexmlns:contexthttp:www。springframework。orgschemacontextxsi:schemaLocationhttp:www。springframework。orgschemabeanshttps:www。springframework。orgschemabeansspringbeans。xsdhttp:www。springframework。orgschemacontexthttps:www。springframework。orgschemacontextspringcontext。xsdcontext:componentscanbasepackageorg。examplebeans
  注意:的使用会隐式启用,当使用时,通常不需要包含元素。
  三、组件命名
  组件命名:
  当组件作为扫描过程的一部分被自动检测时,它的bean名是由该扫描器所知道的BeanNameGenerator策略生成的。
  默认情况下,会使用【Component】,【Repository】,【Service】和【Controller】注解的value值,因此将该名称会提供给相应的beanDefination。如果你的注解不包含任何名称属性,会有默认bean名称生成器将返回【非首字母大写的非全限定类名】。
  例如,如果检测到以下组件类,则名称为【myMovieLister】和【movieFinderImp】,这个和xml自动生成的标识符名称不同:Service(myMovieLister)publicclassSimpleMovieLister{。。。}RepositorypublicclassMovieFinderImplimplementsMovieFinder{。。。}
  四、Scope
  为自动检测组件提供scope:
  与spring管理的组件一样,自动检测组件的默认和最常见的作用域是单例。然而,有时你需要一个不同的范围,可以由Scope注解指定。你可以在注解中提供作用域的名称,如下面的示例所示:Scope(prototype)RepositorypublicclassMovieFinderImplimplementsMovieFinder{。。。}
  五、过滤器
  使用过滤器自定义扫描:
  默认情况下,带有【Component】、【Repository】、【Service】、【Controller】、【Configuration】注解的类是一定能被筛选器选中并进行注册的候选组件。但是,你可以通过应用自定义过滤器来修改和扩展此行为,自由定制筛选哪些或不包含那些组件。将它们作为ComponentScan注解的includeFilters或excludeFilters属性添加(或者作为XML配置中’‘或’‘元素的子元素)。
  每个筛选器元素都需要’type‘和’expression属性。下表描述了过滤选项:
  下面的示例显示了忽略所有【Repository】注解,而使用【stub】包下的类进行替换:ConfigurationComponentScan(basePackagesorg。example,includeFiltersFilter(typeFilterType。REGEX,pattern。Stub。Repository),excludeFiltersFilter(Repository。class))publicclassAppConfig{。。。}
  下面的例子显示了等效的XML:beanscontext:componentscanbasepackageorg。examplecontext:includefiltertyperegexexpression。Stub。Repositorycontext:excludefiltertypeannotationexpressionorg。springframework。stereotype。Repositorycontext:componentscanbeans
  【小知识】
  你还可以通过在注解上设置useDefaultFiltersfalse或通过提供usedefaultfiltersfalse作为元素的属性来禁用默认过滤器。这将有效地禁用使用【Component】、【Repository】、【Service】、【Controller】、【Configuration】注解或元注解的类的自动检测。
  六、定义Bean
  在组件中定义Bean元数据:
  Spring组件还可以向容器提供beanDifination元数据。可以使用Bean注解来实现这一点。ComponentpublicclassFactoryMethodComponent{BeanQualifier(public)publicTestBeanpublicInstance(){returnnewTestBean(publicInstance);}publicvoiddoWork(){Componentmethodimplementationomitted}}
  前面的类是一个Spring组件,它的【doWork()】方法中包含特定于应用程序的代码。然而,它还提供了一个beanDifination,该beanDifination有一个引用方法【publicInstance()】的工厂方法。【Bean注解】标识工厂方法,通过【Qualifier】注解标识一个限定符值。其他可以指定的方法级注解有【Scope】,【Lazy】等。
  下面的例子展示了如何做到这一点:ComponentpublicclassFactoryMethodComponent{privatestaticinti;BeanQualifier(public)publicTestBeanpublicInstance(){returnnewTestBean(publicInstance);}useofacustomqualifierandautowiringofmethodparametersBeanprotectedTestBeanprotectedInstance(Qualifier(public)TestBeanspouse,Value({privateInstance。age})Stringcountry){TestBeantbnewTestBean(protectedInstance,1);tb。setSpouse(spouse);tb。setCountry(country);returntb;}BeanprivateTestBeanprivateInstance(){returnnewTestBean(privateInstance,i);}}
  Okey今天的Spring教程内容就到这里!下期我们将继续讲解Spring的基于Java的容器配置,BeanFactory和FactoryBean,环境抽象,事件机制等进行详尽介绍
  我们下期再见!
  END
  文案编辑offer学长
  文案配图offer学长
  内容由:小新要变强(博主)分享

半夜2点孩子醒了,老公的行为令人感慨,网友生三胎我也愿意生了孩子以后,你们夫妻两个是怎么休息的?很多家庭自从有了孩子以后,都是跟老公分房休息的,理由也很充足:我白天需要上班,孩子晚上闹腾,休息不好怎么行?但是带孩子的那几……周星驰当年我被向太打压,整个娱乐圈就5个人挺我,一辈子感恩前几天,白鹿在全球外交官中国文化之夜上拿到了最受欢迎的青年女演员奖,而她的作品《周生如故》和《一生一世》获得了很多人的好评。剧中曾有一句台词让我印象深刻,世人大多眼孔浅显,只见……为什么人到中年,鼻毛总是往外窜?鼻毛旺盛暗示着什么呢?鼻毛对一个人的呼吸道,鼻子以及人的身体都有非常大的好处,而人之所以会长鼻毛就是因为我们需要鼻毛,鼻毛对我们的身体是有巨大的帮助的,这就是我们的鼻子里面为什么会长出鼻毛的原因。……新疆大盘鸡的做法,地道新疆美食,好吃美味抵挡不住大家好,今天小牛给大家带来一道大菜【新疆大盘鸡】【食材】鸡肉1千克,土豆800克,鸡架500克,老母鸡肉200克。【配料】生姜10克,大葱100克,青椒150克,干……詹俊皇马弱点或是体能次回合拜仁有望破门但比分差距大在此前结束的欧冠四分之一决赛首回合的比赛中,皇马20战胜了切尔西,曼城30战胜了拜仁。著名解说员詹俊也在微博上发文,谈到了次回合他对各支球队情况的与猜测。詹俊在微博上这样……辽宁名帅炮轰杜锋!广东宏远球迷被激怒,让杨鸣执教国家队就在CBA激战正酣的时候,场外却上演了一出闹剧,因为有球迷发现,辽宁名帅,同时也是中国女篮名宿的展淑萍指出,她的儿子付豪在中国男篮一个夏天啥都没练,被耽误了。这样的言论一……大内存才够爽!这四款512GB大内存手机入手超值,最低仅两千若想手机用的久,用的舒服,大内存不能少。今天就给大家推荐四款512GB大内存手机,最低仅两千元,入手超值。第一款:红米Note11TPro(8512GB2048元)这款手……遇见你凛冬散尽星河长明置顶文案希望你在成为井井有条的大人前,拥有很多开心得一塌糊涂的回忆。人生只能有一次选择,我支持向自己认定的方向摸索,遇歧途也不大哭而归,错到底,作为前车之鉴。我想在大地上画……笔记本可以边玩边充电吗?对电池有损害吗?相信各位观众在使用笔记本电脑时都有边充电边玩的习惯,那么这种方式对电脑来说有伤害吗?答案是,不会伤害电脑!!!众所周知现在主流的电池都是锂电池,锂电池几乎没有记忆效……买断沃尔后,火箭阵容中十八人大名单火箭队优先考虑年轻后卫小凯文波特和贾伦格林的发展,因此沃尔不符合球队的计划,火箭裁掉了他最后一年价值4737万美元的合同,这份协议中沃尔放弃了650万美元的薪水,意味着有408……MIUI14系统确实可以,小米11Pro更新后,流畅度飙升,MIUI14系统在发布的时候,小米表示这次在流畅度上做了很大的功夫,采用的光子引擎跟剃刀模式都是为了让用户操作起来更加的顺畅。说实话,一开始我是不相信的,觉得小米就是在吹牛。本……致敬白衣天使梨木台邀护士们畅游山林第111个国际护士节即将到来在这个特殊日子里让我们向白衣天使致以最深敬意感谢你们的每一份付出感谢你们用心守护生命梨木台邀护士们畅游山林……
郭明錤预计iPhone最快2023年采用苹果自研5G基带芯片IT之家5月10日消息今日,天风国际分析师郭明錤发布报告称,预计iPhone最快在2023年采用苹果设计的5G基带芯片,高通将被迫在中低端市场争取更多订单来弥补苹果订单的流失。……赵薇从人人喜爱的小燕子到受人唾弃,她的行为真的严重到被封杀吗赵薇,从人人喜爱的小燕子到人人喊打的过街老鼠,她的所作所为真的有这么严重吗?近日,被封杀了将近两年的赵薇突然出现在了公众的视野,关于赵薇的消息一出,网友们对她的态度并没有……全能天才王昱珩清华毕业后不上班,他把所有吹的牛都实现了曾经有一把扇子,上面写满了中国30万同胞的名字。而日本人却想将这把扇子折起来,变成空白。2015年在《最强大脑》的舞台上,王昱珩在中日比赛中放弃了观察的机会。……IT之家评测室2021款iMac长期使用报告提前感受苹果的次苹果在今年4月21日的春季新品发布会上推出了全新设计的iMac,记得当那些五颜六色花花绿绿的东西突然蹦到眼前时,小编从四肢八脉窜涌而出的意外最终化为嘴边那一句卧槽!。过去……ApplePay快捷交通卡再升级,现已支持亿通行秒通卡首张无感谢IT之家网友数码少年V的线索投递!IT之家6月28日消息感谢IT之家网友热心线索投递,北京亿通行Pay秒通卡现已加入ApplePay大家庭,用户终于可以不用先充值再用……LOL2023季前赛新英雄前瞻确认打野位置将调整《英雄联盟》官网于昨晚发布了一篇LOL开发者日志,主要内容是2023季前赛改动前瞻、后续新英雄的思考,此前网站曝光的打野改动重新调整也包含其中。以下是官网原文:各位……美媒苹果向美国政府提供大量用户隐私数据信息6月12日消息,《纽约时报》日前报道称,苹果公司向美国政府提供大量用户隐私数据信息,其中包括至少两名美国国会议员。对此报道,苹果当地时间周五回应称,对来自政府索要用户相关信息的……今年上衣也开始内卷起来!这三种款式不能少,好看显瘦又高级时尚趋势发展的速度太快了,每年流行的单品都是有所不同。然而在今年,上衣也开始逐渐内卷,不同的款式不同的风格在人们的日常搭配中都拥有着很高的出镜率。假如你没有搭配思路的话,……商务部2022年中美双边贸易额创历史新高展现出较强韧性中新网2月16日电商务部16日召开例行新闻发布会,会上有记者提问:据美方数据显示,2022年美国和中国货物贸易总额达6906亿美元,创历史新纪录。尽管美国部分政客鼓吹中美经济全……德拉季奇东契奇有可能成为GOAT,他像是太空人斯洛文尼亚球员戈兰德拉季奇早些时候接受了采访。谈到队友卢卡东契奇,德拉季奇说道:我认为他是世界上的最佳球员。他才23岁,但是打起来就像是一个经验丰富的老将。他每场比赛都可……再战一年,苹果iOS15iPadOS15支持升级列表设备公布IT之家6月8日消息在今天的WWDC21开发者大会上,苹果发布了iOS15iPadOS15系统更新。苹果今日公布iOS15,通过强大的功能更新进一步提升iPhone体验。……苹果在WWDC21大会前被指不作为iOS14。5新隐私政策形北京时间6月7日晚间消息,据报道,就在年度开发者大会(WWDC)即将开幕之际,苹果公司却面临着加强执行新隐私政策的压力。因为有专家警告称,数以千计的应用程序仍在继续收集用户的数……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网