版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Spring
自定义bean加载方式(复习bean加载控制(复习bean <?xmlversion="1.0"encoding="UTF-<beansxmlns=""xmlns:xsi="" <beanid="bookService"<!- <beanid="dataSource"<beansxmlns=""xmlns:xsi=""xmlns:context=""xsi:schemaLocation="<ponent-scanbase-publicclassBookServiceImplimplementsBookService} publicclassDbConfigpublicDruidDataSourcegetDataSource(){DruidDataSourceds=newDruidDataSource();returnds;}} publicclassSpringConfig{publicDruidDataSourcegetDataSource(){DruidDataSourceds=newDruidDataSource();returnds;}}@ConfigurationpublicpublicclassBookFactoryBeanimplementsFactoryBean<Book>{publicBookgetObject()throwsException{Bookbook=newreturn}publicClass<?>getObjectType(){returnBook.class;}}publicclassSpringConfig8{publicBookFactoryBeanbook(){returnnewBookFactoryBean();}}publicclassSpringConfig2{}BeanMethods=publicclassSpringConfig3publicBookbook(){System.out.println("bookinit...");returnnewBook();}}使 publicpublicclassAppObjectpublicstaticvoidmain(String[]args)SpringConfig3config=ctx.getBean("Config",Config.class);}}publicclassSpringConfig5} publicpublicclassDog}此形式可以有效的降低源代码与Spring技术的耦合度,在springpublicclassSpringConfig{}publicpublicclassAppImportpublicstaticvoidmain(String[]args){AnnotationConfigApplicationContextctx=String[]names=ctx.getBeanDefinitionNames();for(Stringname:names){}}}publicpublicclassMyImportSelectorimplementsImportSelector{returnnew}returnnew}} publicpublicclassMyImportBeanDefinitionRegistrarimplementsImportBeanDefinitionRegistrar{publicvoidregisterBeanDefinitions(AnnotationMetadataimportingClassMetadata,BeanDefinitionRegistryregistry){BeanDefinitionbeanDefinition=BeanDefinitionBuilder}} publicpublicclassMyPostProcessorimplementsBeanDefinitionRegistryPostProcessor{publicvoidpostProcessBeanDefinitionRegistry(BeanDefinitionRegistryregistry){BeanDefinitionbeanDefinition=}} <?xmlversion="1.0"encoding="UTF-<beansxmlns=""xmlns:xsi="" <beanid="bookService"<!- <beanid="dataSource" <beansxmlns=""xmlns:xsi=""xmlns:context=""xsi:schemaLocation="<ponent-scanbase-publicclassBookServiceImplimplementsBookService} publicclassDbConfigpublicDruidDataSourcegetDataSource(){DruidDataSourceds=newDruidDataSource();returnds;}} publicclassSpringConfig{publicDruidDataSourcegetDataSource(){DruidDataSourceds=newDruidDataSource();returnds;}}@ConfigurationpublicpublicclassBookFactoryBeanimplementsFactoryBean<Book>{publicBookgetObject()throwsException{Bookbook=newreturn}publicClass<?>getObjectType(){returnBook.class;}}publicclassSpringConfig8{publicBookFactoryBeanbook(){returnnewBookFactoryBean();}}publicclassSpringConfig2{}BeanMethods=publicclassSpringConfig3publicBookbook(){System.out.println("bookinit...");returnnewBook();}}使 publicpublicclassAppObjectpublicstaticvoidmain(String[]args)ApplicationContextctx=newAnnotationConfigApplicationContext(Config.claSpringConfig3config=ctx.getBean("Config",Config.class);config.book();}}publicclassSpringConfig5} publicclassDog}此形式可以有效的降低源代码与Spring技术的耦合度,在springpublicclassSpringConfig{}publicpublicclassAppImportpublicstaticvoidmain(String[]args){AnnotationConfigApplicationContextctx=String[]names=ctx.getBeanDefinitionNames();for(Stringname:names){}}}publicpublicclassMyImportSelectorimplementsImportSelector{returnnew}returnnew}} publicclassMyImportBeanDefinitionRegistrarimplementsImportBeanDefinitionRegistrar{publicvoidregisterBeanDefinitions(AnnotationMetadataimportingClassMetadata,BeanDefinitionRegistryregistry){BeanDefinitionbeanDefinition=BeanDefinitionBuilder}} publicclassMyPostProcessorimplementsBeanDefinitionRegistryPostProcessor{publicvoidpostProcessBeanDefinitionRegistry(BeanDefinitionRegistryregistry){BeanDefinitionbeanDefinition=}}@Configuration注解 @Configuration注解 publicpublicclassMyImportSelectorimplementsImportSelector{publicString[]selectImports(AnnotationMetadataimportingClassMetadata){try{if(clazz!=null){returnnew}}catch(ClassNotFoundExceptione){returnnewString[0];}return}}publicpublicclassSpringConfig{publicCattom(){returnnew}}publicpublicclassSpringConfig{publicCattom(){returnnew}}匹配指定类型的publicclassSpringConfig{publicCattom(){returnnew}}匹配指定名称的publicclassSpringConfig{publicCattom(){returnnew}}匹配指定名称的publicclassSpringConfig{publicCattom(){returnnew}}publicclassMyConfig{publicCattom(){returnnewCat();}}publicpublicclassSpringConfig{publicDruidDataSourcedataSource(){DruidDataSourceds=newDruidDataSource();returnds;}} publicclassCartoonProperties{privateCatcat;privateMousemouse;publicCatgetCat(){return}publicvoidsetCat(Catcat){this.cat=cat;}publicMousegetMouse(){returnmouse;}publicvoidsetMouse(Mousemouse){this.mouse=mouse;}}name"图多盖洛"age:5name:age:"publicclassCartoonCatAndMousepublicclassCartoonCatAndMouse{privateCatcat;privateMousepublic}}publicclassCartoonCatAndMouse{privateCartoonPropertiesthis.cartoonProperties=cartoonProperties;cat=newCat();} ))publicpublicfinalclassSpringFactoriesLoaderpublicstaticfinalStringFACTORIES_RESOURCE_LOCATION="META-})BeanMethods=publicclassRedisAutoConfiguration{}))publicclassRedisProperties{privateStringprivateStringhost="localhost";privateintport=6379;}##Auto@EnableAutoConfiguration(excludeName="",exclude=<artifactId>spring-boot-starter-<!--web起步依赖环境中,排除Tomcat起步依赖,匹配自动配置条件<artifactId>spring-boot-starter-<!--添加Jetty起步依赖,匹配自动配置条件<artifactId>spring-boot-starter-bean加载控制(编程&注解案例:统计独立 次自定义 数据记录位置:Map ①步骤一:降低难度,主动调用,仅统计单一操 ②步骤二:开 业务参数(配置项①输出频度,默认10②③publicpublicclassIpCountServiceprivateMap<String,Integer>ipCountMap=newHashMap<String,Integer>();privateHttpServletRequestrequest;publicvoidcount(){StringipAddress=request.getRemoteAddr();}}}publicpublicclassIpAutoConfiguration{returnnewIpCountService();}}模拟调用(非最终版 publicclassBookControllerprivateIpCountService publicRgetPage(@PathVariableintcurrentPage,@PathVariableintpageSize,Book//TODO追加 IPage<Book>page=bookService.getPage(currentPage,pageSize,book);if(currentPage>page.getPages()){}returnnewR(true,}} 1.使用自动配置加载业务功publicclassIpAutoConfiguration{returnnewIpCountService();}}publicclassIpCountServiceprivateMap<String,Integer>ipCountMap=@Scheduled(cron="0/10****?")publicvoidprint(){
Stringkey=info.getKey();Integercount=StringlineInfo=String.format("|%18s|%6d|",key,count);} }} 1.完成业务功能定时显示报2.publicclassIpProperties{/**日志显示周期privatelongcycle=/**是否周期内重置数据privateBooleancycleReset=/**日志输出模式detail:明细模式simple:极简模式*/privateStringmodel=LogModel.DETAIL.value;publicenumLogModel{privateStringvalue;privateLogModel(Stringvalue){this.value=value;}publicStringgetValue(){returnvalue;}}}publicclassIpAutoConfiguration{returnnewIpCountService();}}publicpublicclassIpCountService{privateIpPropertiesipProperties;@Scheduled(cron="0/10****?")publicvoidprint(){}else}}}}System.out.println(""); StringlineInfo=String.format("|%18s|%6d|",info.getKey(),info.getValue());}
for(Map.Entry<String,Integer>info:ipCountMap.entrySet()){String
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年山东省高密市高二生物下册期末考试模拟卷附答案(培优A卷)
- 2026年吉林省敦化市高二生物下册期末考试模拟卷含答案【达标题】
- 2026年湖北省麻城市高二生物下册期末考试检测卷含答案AB卷
- 2025年江西省瑞昌市高二生物下册期末考试模拟卷含完整答案(易错题)
- 2026年山东省临清市高二生物下册期末考试试卷及参考答案【能力提升】
- 2026年吉林省舒兰市高二生物下册期末考试测试卷含答案【预热题】
- 2026年3d效果的幼儿园
- 2026年幼儿园社会课节约水资源
- 2025年辽宁省兴城市高二生物下册期末考试模拟卷及答案【典优】
- 2026年吉林省扶余市高二生物下册期末考试模拟卷含完整答案【全优】
- DL∕T 2031-2019 电力移动应用软件测试规范
- 创意手工智慧树知到期末考试答案章节答案2024年湖北师范大学
- 肝胆外科术后出血观察及护理
- 如何培养孩子的好奇心和探索精神
- 精神科病情评估课件
- 重视心血管-肾脏-代谢综合征(CKM)
- 2022宜都市国通投资开发有限责任公司招聘试题及答案解析
- 新课标下的小学数学复习课的教学课件
- 输变电工程动火作业票
- 马鞍山二中理科创新人才实验班招生考试物理试题
- 第四轮教育部学科评估结果汇总【全部学科】Excel版
评论
0/150
提交评论