范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

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

  "这里是 offer 学院,帮你轻松 拿offer"
  嗨~大家好,我是学长!今天的你过得还好吗?
  - 2022.11.30 -
  本文章为【Spring】classpath扫描和组件管理相关知识,下边将对@Component  和及其派生出的其他注解,自动检测类和注册beanDifination,组件命名,为自动检测组件提供scope,使用过滤器自定义扫描,在组件中定义Bean元数据等进行详尽介绍~
  本节我们可以通过【扫描类路径】隐式检测候选组件。 【候选组件】指的是通过扫描筛选并在容器中注册了相应beanDifination的类。这样就不需要使用XML来执行bean注册。 相反,你可以使用注解(例如,【@Component  】)。从Spring 3.0开始,Spring JavaConfig 项目提供的许多特性都是核心Spring框架的一部分。 这允许你使用Java而不是使用传统的XML文件来定义bean。
  一、@Component
  @Component 和及其派生出的其他注解:@Component  是任何spring管理组件的通用注解。@Repository 、@Service 和@Controller 是【@Component 】用于更具体用例的注解(分别在持久性、服务和表示层中)。这些注解对于我们后期对特定bean进行批量处理时是有帮助的。
  二、检测类和注册
  自动检测类和注册beanDifination:
  Spring可以自动检测类的信息,并将相应的【BeanDefinition】实例注册到【ApplicationContext】中。 例如,以下两个类适合这样的自动检测:@Service public class SimpleMovieLister {      private MovieFinder movieFinder;      public SimpleMovieLister(MovieFinder movieFinder) {         this.movieFinder = movieFinder;     } }@Repository public class JpaMovieFinder implements MovieFinder {     // implementation elided for clarity }
  要自动检测这些类并注册相应的bean,你需要将【@ComponentScan 】添加到你的【 @Configuration 】类中,其中【basePackages 】属性是这两个类的公共父包。说人话就是:指定一个包名,自动扫描会检测这个包及其子包下的所有类信息。@Configuration @ComponentScan(basePackages = "org.example") public class AppConfig  {     // ... }
  为简单起见,前面的示例可能使用了注解的value属性 (即@ComponentScan ("org.example") )。
  当然我们可以使用以下XML代替,他们是等效的:<?xml version="1.0" encoding="UTF-8"?>        
  注意:   的使用会隐式启用  ,当使用  时,通常不需要包含 元素。
  三、组件命名
  组件命名:
  当组件作为扫描过程的一部分被自动检测时,它的bean名是由该扫描器所知道的"BeanNameGenerator"策略生成的。
  默认情况下,会使用【@Component 】, 【@Repository 】,【@Service 】和【@Controller 】注解的value值,因此将该名称会提供给相应的beanDefination。 如果你的注解不包含任何名称属性,会有默认bean名称生成器将返回【非首字母大写的非全限定类名】。
  例如,如果检测到以下组件类,则名称为【myMovieLister 】和【movieFinderImp 】,这个和xml自动生成的标识符名称不同:@Service("myMovieLister") public class SimpleMovieLister {     // ... }@Repository public class MovieFinderImpl implements MovieFinder {     // ... }
  四、Scope
  为自动检测组件提供scope:
  与spring管理的组件一样,自动检测组件的默认和最常见的作用域是"单例"。 然而,有时你需要一个不同的范围,可以由" @Scope " 注解指定。 你可以在注解中提供作用域的名称,如下面的示例所示:@Scope("prototype") @Repository public class MovieFinderImpl implements MovieFinder {     // ... }
  五、过滤器
  使用过滤器自定义扫描:
  默认情况下,带有【@Component 】、【@Repository 】、【@Service 】、【@Controller 】、【@Configuration 】注解的类是一定能被筛选器选中并进行注册的候选组件。 但是,你可以通过应用自定义过滤器来修改和扩展此行为,自由定制筛选哪些或不包含那些组件。 将它们作为@ComponentScan 注解的includeFilters  或 excludeFilters  属性添加(或者作为XML配置中’   ‘或’   ‘元素的子元素)。
  每个筛选器元素都需要’ type ‘和’ expression "属性。 下表描述了过滤选项:
  下面的示例显示了忽略所有【@Repository 】注解,而使用【stub 】包下的类进行替换:@Configuration @ComponentScan(basePackages = "org.example",         includeFilters = @Filter(type = FilterType.REGEX, pattern = ".*Stub.*Repository"),         excludeFilters = @Filter(Repository.class)) public class AppConfig {     // ... }
  下面的例子显示了等效的XML:                             
  【小知识】
  你还可以通过在注解上设置useDefaultFilters=false  或通过提供use-default-filters="false"  作为  元素的属性来禁用默认过滤器。 这将有效地禁用使用【@Component 】、【@Repository  】、【@Service 】、【 @Controller 】、【@Configuration 】注解或元注解的类的自动检测。
  六、定义Bean
  在组件中定义Bean元数据:
  Spring组件还可以向容器提供beanDifination元数据。 可以使用 @Bean 注解来实现这一点。@Component public class FactoryMethodComponent {      @Bean     @Qualifier("public")     public TestBean publicInstance() {         return new TestBean("publicInstance");     }      public void doWork() {         // Component method implementation omitted     } }
  前面的类是一个Spring组件,它的【doWork() 】方法中包含特定于应用程序的代码。 然而,它还提供了一个beanDifination,该beanDifination有一个引用方法【public Instance() 】的工厂方法。 【@Bean注解 】标识工厂方法,通过【@Qualifier 】注解标识一个限定符值。 其他可以指定的方法级注解有【@Scope  】, 【@Lazy  】等。
  下面的例子展示了如何做到这一点:@Component public class FactoryMethodComponent {      private static int i;      @Bean     @Qualifier("public")     public TestBean publicInstance() {         return new TestBean("publicInstance");     }      // use of a custom qualifier and autowiring of method parameters     @Bean     protected TestBean protectedInstance(             @Qualifier("public") TestBean spouse,             @Value("#{privateInstance.age}") String country) {         TestBean tb = new TestBean("protectedInstance", 1);         tb.setSpouse(spouse);         tb.setCountry(country);         return tb;     }      @Bean     private TestBean privateInstance() {         return new TestBean("privateInstance", i++);     }  }
  Okey~ 今天的Spring教程内容就到这里!下期我们将继续讲解Spring的基于Java的容器配置,BeanFactory和FactoryBean,环境抽象,事件机制等进行详尽介绍~
  我们下期再见!
  END
  文案编辑|offer学长
  文案配图|offer学长
  内容由:小新要变强(博主)分享

女排世锦赛中国胜波多黎各10月5日,中国队球员李盈莹(左)和袁心玥在比赛中庆祝得分。新华社记者孟鼎博摄当日,在荷兰鹿特丹举行的2022世界女排锦标赛第二阶段E组小组赛中,中国队以3比0战胜波多黎各队。10深秋已过寒露至,一场秋雨一场寒,愿你有衣暖身有人暖心雨不停地下,已经十多天了,刚脱了夏装便换上了秋装,走在路上,行人匆匆,一部分人已经穿上了冬装,看来最近一场雨,天气真的寒冷了。冷了便加衣,有衣暖身,我想起了小时候,每次天冷,妈妈总芦苇辞(原创)芦苇辞(原创)秋风凄紧一分芦苇就俯身一寸野生野长深谙自然的法则不能超凡脱尘就顺势应变善于在风中躬身有接纳风雨的谦逊就有百折不倒的坚韧一生临水而居有照看波浪的情怀就有聚水成渊的精神听早期港圈神仙打架刘嘉玲在蓝洁瑛身边像路人,向太艳压关之琳上世纪八九十年代的香港娱乐圈是神仙打架的年代,那个时候电影圈之所以繁华,得益于香港娱乐圈的那一波美女帅哥的出现,香港电影的辉煌时期火遍整个亚洲,当时很多人也借此机会走向了好莱坞,辉水色朦胧掩靓姿一叶知秋娉婷舞文绿怡香轩一叶知秋桂绽芳,飘纱露沁湿衣妆。金光眩目娉婷舞,月下闻香踏曲徉。七绝。平水韵凝眸万里墨花逍文绿怡香轩秋云漠漠飘飞絮,碧桂翩翩水月摇。一径苍茫筝曲冉,凝眸万里华为P60渲染图曝光,熟悉的味道,但疑似有刘海或灵动岛药丸挖孔文咸谈科技馆目前Mate50系列已经上市快一个月了,从华为的发货量来看,感觉华为手机的产能逐渐跟上了,很多用户多少都能买到华为手机了。而且现在距离Mate50系列开售才过去不久,网我们使用化妆品的目的是什么?化妆品看得见的目的就是遮盖,我们可以用粉底,美白类化妆品或者彩妆遮盖住色斑或者暗黄等,但是人不能总带着面具出门吧?卸完妆大家都不认识您啦。有人说保湿啊!化妆品内的保湿成分无非是甘油不用洗发水洗头后一个月我悟了不用洗发水洗头的好处洗头是每个人都要做的事情,但是你知道吗?有的人就是不爱洗头,天天留着厚厚的头发,看着就心烦。那么就可以不用洗发水洗头了。很多人都不知道为什么不洗头会对自己发质产花生米里加3个西红柿,教你从没吃过的做法,实在太香了,超解馋国以民为本,民以食为天,各位老饕大家好!有句话说早上吃好,中午吃饱,晚上吃少,但是有很多人没有时间做早餐,也有的人是不会做。今天,我来教大家用西红柿搭配花生米做个好吃的早餐饼,方法气温骤降迎重阳,养生之重要养阳今年的重阳节遇上了大幅降温。冷飕飕的天气里该如何呵护我们的身体呢?南京市中西医结合医院专家们提醒,无论是在饮食养生还是运动调养上,此时都需注意养护好体内的阳气。秋瓜多警惕损胃阳自重花生是糖尿病的导火索?保护胰岛,牢记4吃4不吃糖尿病作为难以控制的慢性疾病,发病后患者胰岛功能降低,在控制血糖的同时要保护胰岛,只有该器官功能提高,分泌出来的胰岛素足以参与糖类物质代谢,才能让指标稳定,此时治疗是一方面,饮食也传奇3怀旧版你还在纠结选什么职业吗?来这我告诉你答案传奇3可能有很多以前没玩过的朋友。如果你第一次接触这个游戏,今天的小编会讲解怎么玩。顾名思义,Legend3是Legend的升级版。里面有很多内容延续了传奇的玩法,增加了一些新的技2024年底前iPhone势必要抛弃Lightning改为USBC欧盟长期以来都在谈论如何强制中小型电子产品都使用相同的充电孔,经过近十年的辩论和不断地拖迟后,欧盟在今年六月拍摆定案,到2024年底前所有中小型可携带式的电子产品,包含手机平板相机手掌般大小的迷你电脑主机开箱搭载锐龙5560U,性能不低国产迷你电脑主机品牌零刻在今年推出新品的速度有点快,基本上入门中端高端三个档位都有新品推出。近段时间,零刻又上线了定位中端的SER系列新品迷你电脑主机,也就是SER5,不过这一代的WLK怀旧服5H装备收集最效率方案第四期邪DKDK要打dps前期我只推荐双持邪DK,只推荐,T0职业,先上图说明一下,由于DK天赋的原因,比起其他物理dps有很强的倾向性,命中够了以后,力量永远是第一优先级,这和狂暴战盗贼有点虽成功晋级S12小组赛,RNG却再次打破历史LPL首次输给LJL代表队2022电竞季S12入围赛来到了最后一个比赛日,本以为会非常焦灼的欧美大战,居然在EG一场30的横扫下轻松结束,MAD成为四大赛区第一支无缘S12世界赛接下来旅程的队伍,而EG在晋冒险迅捷图奇,零同行冲分阵容,龙神来了也扛不住版本强势阵容均在一览图中大家只需要关注微信公众号别卡小陈的牌输入图奇即可获取详细教学阵容CHello,大家好呀,小陈来咯今天给大家带来强势冲分阵容一起来看看本期的冒险迅捷射手吧!(SteamDB第三方Steam数据库头条创作挑战赛Steam是每个电脑游戏玩家都一定会使用的数字游戏服务平台,使用Windows大多数都在Steam购买游戏,搭配上各种折扣活动真的很划算,只要拥有后就能随时登入Ste全境封锁腹地被曝已开启封测仅对部分人员公开今日(10月5日),据外媒消息,育碧最新免费生存动作多人射击游戏全境封锁腹地在本周开启了封闭测试。据了解,封闭测试时间将从10月3日至10月8日。而在此前游戏进行了长达18个月之久逆水寒手游首测到底做得咋样?玩家看情况都能横扫整个武侠圈了要说这个国庆假期,哪款新游是玩家心目中最靓的仔?那么毫无疑问是逆水寒手游了!自从上周五开启首测后,这款游戏就牢牢占据了各大直播平台热搜的榜首,不少玩家苦于限号测试自己玩不到,纷纷涌9月份次旗舰手机性能排行榜vivoS15系列上榜头条创作挑战赛回顾2022年9月份,安卓手机市场带来的新品并不多,按照价格来看份量最重的是vivoXFold,其次是ROG6天玑至尊版,最后是小米Civi2,这三款手机各有千秋,受追梦谈续约寸步不让,库里让勇士颜面无存格林指定心仪下家虽然金州勇士队夺得了上赛季总冠军奖杯值得庆幸,但接下来要面临的是追梦格林维金斯和普尔的续约问题,众所周知,这三人下一份都是顶薪合同,考虑勇士队本身就缴纳了高额奢侈税,所以同时留住他
折叠屏手机值得买吗把地球的故事讲给宇宙去年买了两个折叠屏手机,今年一月份都坏了,我一度苦恼不已。保修期一年,我先寄过去一部,客服说不在保修范围,人为因素导致。说外壳有伤。8000多的手机不与保修。修机关枪凯利与梅根福克斯(MeganFox)玩弄不成文的时尚规则梅根福克斯和机关枪凯莉是红毯风云情侣。梅根福克斯(MeganFox)和机关枪凯利(MachineGunKelly)始终在红地毯和街头彰显个性。福克斯和凯利穿着独特的造型在2020年在TikTok一夜走红,这个黑人胖女性为全球大码女性打开了时尚大门欢迎来到JuicyBodyCoddess,在这里你必须要达到普通人两倍的体重才能进来买东西。这是SummerLucille在每一位客人走进店里时的欢迎语。如果你在商店里走一走,你会戒指的戴法有什么讲究?戒指的戴法和意义十个手指科学婚恋指南戒指一般代表着爱情承诺及恩爱。它也可以用来表达特定的意思,比如戒指可以表达某人对另一半的忠贞爱情承诺和信任。此外,戒指也可以用来示爱,表明双方的终身承诺。戒指也可以用来欧洲杯太太团C位争夺战风风韵韵胡梅尔斯妻子凯茜本届欧洲杯太太团C位争夺战将有8位佳丽参战,在几天的积分赛角逐后,将通过积分排名两两PK决出最终的C位!本期参赛选手胡梅尔斯妻子凯茜菲舍尔时隔3年,胡梅尔斯再次被勒夫招入国家队,出袋鼠摇管晨辰17岁夺得奥运冠军火出圈,18岁疑似退役惹争议2021年奥运会,年仅17岁的管晨辰凭借着一手袋鼠摇,成功夺得冠军的同时,也让她彻底火出圈,狂涨400万的粉丝。尤其是她的这个袋鼠摇的动作,引得不少人争相模仿,甚至还有人变出一段舞世界冠军王楠婚后47天查出癌症,富豪丈夫的做法令人泪目!文丨古书奇谭编辑丨古书奇谭王楠是世界乒乓球史上第一位获得全满贯的选手,她一共获得了24次世界冠军,就在其事业巅峰的时候,她选择嫁给了一位富豪。然而在他们婚后的第47天,王楠被查出了究竟是谁?围棋世界冠军中,唯一的大满贯得主,柯洁差得还远在浩瀚的世界围棋大赛的历史长河中,一共出现45位世界冠军,他们分享了12项世界大赛的123座世冠金杯。在世冠排行榜上,名列前茅的八大高手分别是李昌镐李世石曹薰铉古力柯洁刘昌赫朴廷桓新秀赛毁掉亨德森排名,文班亚马排名稳定,休斯顿新星冲进前五近日20222023赛季的全明星周末正式开始,第一天安排的则是新秀赛的比赛,在沿用4队分别对抗的赛事之后,近年来NBA又将新秀赛的邀请范围扩大到还没进入联盟的青年才俊们。本届比赛他这或许才是最合理的NBA历史前十排名NBA历史前十排名一直存在争议,在每个球迷心中都有自己的排名。下面我们本着客观公众的原则从球员个荣誉贡献方面综合评断,排出10位球星的顺序,欢迎大家一起讨论。1。迈克尔乔丹乔丹被誉准爸妈一般什么时候能感觉到胎动准妈妈头胎感觉到胎动的时间通常在怀孕到周之间。如果现在没有感觉到胎动也不要担心。每个人的怀孕情况都不同,有些人会更早有些人会更晚,这些都是正常的。当一开始有胎动时,这种感觉可能很难