当前位置: 首页 > news >正文

西安市地铁建设指挥部网站360下载

西安市地铁建设指挥部网站,360下载,网站建设与维护asp,wordpress 注入 实战前言 一个刚刚看完SpringBoot自动装配原理的萌新依据自己的理解写下的文章,如有大神发现错误,敬请斧正,不胜感激。 分析SpringBoot自动配置原理 SpringBoot的启动从被SpringBootApplication修饰的启动类开始,SpringBootApplicaiotn注解中最…

前言

一个刚刚看完SpringBoot自动装配原理的萌新依据自己的理解写下的文章,如有大神发现错误,敬请斧正,不胜感激。

分析SpringBoot自动配置原理

  1. SpringBoot的启动从被@SpringBootApplication修饰的启动类开始,@SpringBootApplicaiotn注解中最重要的注解是@EnableAutoConfiguration,其负责自动装配,底层由@Import()注解中传入一个ImportSeletor的实现类AutoConfigurationImportSelector完成自动配置类的导入
  2. AutoConfigurationImportSelector类中selectImports方法负责返回一个由自动配置类权限定类名组成的字符串数组,在这个方法中扫描了spring-boot-autoconfigure-2.6.13.jar/WEB-INF/spring.factories中的所有权限定类名,经层层返回以及@Conditional系类的注解筛选后,将需要加载的配置交给IOC容器完成自动配置

一个标准的SpringBoot启动器的组成

一个“干活的”类

这个类是整个模块的核心,他完成整个模块中的逻辑操作,他的参数需要从配置文件中获取,他需要被纳入IOC容器的管理

一个"搬运工"类

这个类从配置文件中读取数据,并被注入到核心类中,是核心类从配置文件中获取数据的桥梁

一个"与SpringBoot沟通"的类

这个类的权限定类名被写入到spring-boot-autoconfigure-2.6.13.jar/WEB-INF/spring.factories文件中,在SpringBoot容器启动时被读取,并通过@Conditional系列注解判断是否加载该配置文件,以及将核心类纳入到IOC容器管理

自定义SpringBoot启动器

目标:完成一个自我介绍类,从配置文件中获取name以及introduction介绍词

搬运工类SelfIntroductionPropertis

@ConfigurationProperties(prefix = "self") // 指定配置文件中的前缀
@Data
public class SelfIntroductionPropertis {private String name = "Default Name";private String introduction = "Default Introduction";
}

@ConfigutationProperties(prefix=“self”)使用配置绑定对象完成对配置的读取

核心类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class SelfIntroductionService {@Resourceprivate SelfIntroductionPropertis selfIntroductionProperties;public String say(){return "Hello,My name is" + selfIntroductionProperties.getName() + "," + selfIntroductionProperties.getIntroduction();}
}
  • @Resource 自动注入SelfIntroductionPropertis对象
  • say()方法完成该模块的主要功能

与"SpringBoot"沟通,完成自动装配的类

@EnableConfigurationProperties(SelfIntroductionPropertis.class) 
//开启对SelfIntroductionPropertis类中@ConfigurationProperties注解的配置绑定支持,并将其纳入IOC容器管理
@ConditionalOnClass(SelfIntroductionService.class)
@Configuration // 是一个配置类,配置bean
public class SelfIntroductionAutoConfiguration {@Bean@ConditionalOnMissingBeanpublic SelfIntroductionService selfIntroductionService() {return new SelfIntroductionService();}
}
  • @EnableConfigurationProperties注解开启对SelfIntroductionPropertis类中@ConfigurationProperties注解的配置绑定支持,并将其纳入IOC容器管理
  • @ConditionalOnClass(SelfIntroductionService.class)完成自动配置的关键,只有当核心类存在时才引入这个配置类
  • @Bean 将SelfIntroductionService纳入IOC容器的管理,并指定name

将自动配置类加入到SpringBoot自动配置jar包中的WEB-INF/spring.factories中

从包中复制.factories文件到main/resource/WEB-INF文件夹下,使该自动配置类在SpringBoot启动时能被扫描到,完成自动配置
在这里插入图片描述

打包,并存入本地maven仓库

测试

新建SpringBoot工程并将自定义启动器引入

<?xml version="1.0" encoding="UTF-8"?>
<project>
。。。<dependencies><dependency><groupId>xyz.wrywebsite</groupId><artifactId>springboot-mystarted</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
。。。</project>

配置文件编写

server.port=8080
self.name=lisi
self.introduction=wow wow wow

编写测试类

@RestController
public class BasicController {@Resourceprivate SelfIntroductionService selfIntroductionService;@GetMapping("/selfIntroduction")public String selfIntroduction() {return selfIntroductionService.say();}}

运行,输出结果

Hello,My name islisi,wow wow wow
http://www.yayakq.cn/news/955527/

相关文章:

  • 网站的布局结构三种帮别人制作wordpress赚钱吗
  • 昆山有建设网站的吗wordpress如何查看并修改源代码
  • 个人网站设计首页界面怎么做网站关键词库排名
  • 汕头网址模板建站如何制作有关西安的网站
  • 外贸公司应该怎样做外贸网站网站有哪些功能
  • 烟台网站制作软件建设企业网站企业网上银行登录官网下载
  • 做宣传网站要多少钱wordpress招聘插件
  • 关于企业官方网站建设的ppt网站加水印
  • 做网络的网站很重要吗猪八戒类似网站开发成本
  • 南宁手机建站公司站点建设网站
  • 做网站原型的软件上海营销平台网站建设
  • 建一个全部由自己控制的网站需要多少钱自己做众筹网站
  • 购物网站源码下载如何做网站流量分析报表
  • 国际物流网站天津做胎儿鉴定网站
  • 发卡网站建设方案网站备案 域名过期
  • 网站建设公司大全重庆网站关键字优化
  • 建筑智库免费网站最新发布的手机
  • 郑州网站建设蝶动科技河北邢台特色美食
  • 图书馆网站建设所需资料青岛网站设计选哪家
  • 北京商城网站设计报价WordPress主题 o
  • 网站开发 招标采购参数网站开发入门书
  • 万网网站后台管理系统重庆平台网站建设多少钱
  • 网站建设推荐网如何选择低价网站建设
  • 企业信用信息系统官网seo如何优化网站推广
  • 济南网站的建设网站优化成都哪里好
  • 网站自然排名哪有培训seo
  • 温州网站排名优化文旅品牌建设
  • 男女做那个网站天津网站制作专业
  • 福建省环保厅网站建设项目验收南沙做网站
  • 网站做招聘需要什么资质网站关键词重要吗