当前位置: 首页 > wzjs >正文 唐山网站建设方案策划无锡百度快照优化排名 wzjs 2025/8/4 13:17:05 唐山网站建设方案策划,无锡百度快照优化排名,邢台网最新发布,肇庆市有那家做网站的一.原理分析 我们对springboot项目进行原理分析,就要从springboot的启动类入手。在启动类上有一个注解SpringBootApplication,这个注解是我们进行原理分析和源码跟踪的关键。我们进入看看。该注解也是Springboot框架中最重要的注解。 进入SpringBootAp…一.原理分析 我们对springboot项目进行原理分析,就要从springboot的启动类入手。在启动类上有一个注解@SpringBootApplication,这个注解是我们进行原理分析和源码跟踪的关键。我们进入看看。该注解也是Springboot框架中最重要的注解。 进入SpringBootApplication注解中,我们可以看到如下: 这些注解中只有一个注解的功能我们还不清楚,就是@EnableAutoConfiguration,看来这个注解就是实现自动配置的关键注解。 下面我们就来研究这个注解。 二. @EnableAutoConfiguration 上一小节中我们提到,@EnableAutoConfiguration这个注解以及以enable打头的注解当中封装了一个注解,就是@Import注解。通过@Import来导入指定的bean或者配置类。我们进入到@EnableAutoConfiguration这个注解当中,发现果然有一个 @Import注解。@Import注解当中封装的是一个AutoConfigurationImportSelector类。而 ImportSelector是一个接口,AutoConfigurationImportSelector类其实就是 ImportSelector这个接口的实现类,下面我们就来找这个ImportSelector接口。 接下来我们进入到AutoConfigurationImportSelector这个实现类当中。当前类实现了DeferredImportSelector这个接口。 我们再进入DeferredImportSelector,这个接口又继承了ImportSelect这个接口。 在ImportSelect这个接口中有一个非常重要的接口方法selectImports,这个方法的返回值String类型的数组中封装的是哪些类我们需要导入到IOC容器当中。里面封装的就是这些类的全类名。 下面我们就要找到ImportSelector这个接口的实现类,也就是AutoConfigurationImportSelector这个类中的selectImports这个方法,我们就重点关注selectImports这个方法的返回值。该返回值是一个String类型的数组,使用StringUtils这个工具类的toStringArray方法返回,该方法传递了一个autoConfigurationEntry对象,该对象调用getConfigurations()方法。 autoConfigurationEntry对象是调用getAutoConfigurationEntry这个方法获取到的,因此下面的关键就是查看getAutoConfigurationEntry这个方法。 这个方法的返回值是一个AutoConfigurationEntry对象,里面传递两个参数,一个是configurations,一个是exclusions。 通过上面的selectImports方法可以知道最终它调用了getConfigurations()这个方法,因此关键点就在于这个configurations参数。我们可以看到configurations这个List集合是通过getCandidateConfigurations这个方法获得的。我们查看该方法。 在该方法中我们在生成configurations这个List集合的时候调用了这么一个方法loadFactoryNames,在下面有一个断言,用来判断configurations这个集合是否是空的。如果是空的就会报下面的信息:没有META-INF/spring.factories或META-INF/spring/org......这两个自动配置的类被发现。 也就是说在spring项目执行的时候会自动加载这两个文件中所配置的信息,把这两个文件中配置的信息加载出来后封装到list集合中,最终list集合中的内容再封装到String[]类型的数组中。String[]类型的数组中存储的就是要加载到IOC容器中的bean或者配置类。 现在的关键点就是要找到这两份文件。 3.自动配置文件 这两份文件在我们引入的起步以来当中基本上都有。spring-boot-autoconfigure这个这个依赖就是自动配置的依赖,在这个jar包当中就会有这类文件。 mybatis依赖jar包中也有 那么我们就找到这些jar包,看看里面都配置了什么信息。我们找到library 点击在这里面,找到spring.factories文件。里面配置了很多信息。 这些信息就是这些要自动配置的类的全类名。 以及第二个文件org.springframework.boot.autoconfigure.AutoConfiguration.imports,里面配置的都是全类名。这些文件中的内容会被读取出来最总加载到IOC容器中成为IOC容器中的bean对象。这些类都是自动配置类。 之前我们使用的Gson对象,虽然我们没有配置但是可以直接使用,原因就是进行了自动配置。我们可以找打Gson这个自动配置类,查看他的源码。 源码中上面有一个注解@AutoConfiguration,底层就封装了一个注解@Configuration,那就说明当前类是一个配置类。 之所以能够完成自动配置,就是因为里面定义了一个gson方法,且返回值就是Gson类型的数据,上面定义了一个@Bean注解。因此才可以直接使用@Autowired注入该bean对象直接使用。 4.总结 @SpringBootApplication注解中封装了三个关键注解@SpringBootConfiguration,@ComponentScan,@EnableAutoConfiguration。而在@EnableAutoConfiguration底层封装了一个@Import注解。传入的是ImportSelector接口的实现类,这个接口中的方法selectImports()方法,导入了两个文件,这两个文件中指定了,要自动配置的类的全类名。 注:spring.factories配置文件已被移除。 以上就是spring实现自动配置的原理。 查看全文 http://www.dtcms.com/wzjs/215988.html 相关文章: 肇庆网站seo网页设计工资一般多少 做网站学完html网站页面禁止访问 bsci网站的cap是如何做成都网站建设方案外包 学校网站建设电话做网站用哪个软件 网站建设实训报告的内容怎么写百度搜索引擎的使用方法 洛卡博网站谁做的b站软件推广大全 宝安疫情最新消息今天又封了seo这个行业怎么样 做纱窗修水管的一个网站seo优化服务商 网站建设话术宝典网络营销专业大学排名 怎么建一个卖东西的网站东莞网站公司哪家好 网站开发维护岗位职责搜狗网站收录提交入口 南宁律师网站建设网推怎么做最有效 茶叶电子商务网站建设的结论广东seo推广方案 开发网站大概要多少钱福州网站开发公司 深圳做app网站设计软件开发外包公司 网站排名怎么靠前免费宣传网站 网站建设报价单下载搜索引擎营销怎么做 站长工具关键词申请自媒体平台注册 外包做的网站可以直接去收录吗网络免费推广平台 网站建设项目说明书模板推销一个产品的方案 东莞网站建设运营方案如何进行推广 如何设计的英文网站竞价托管如何托管 静态网站开发一体化课程百度一下百度网页官 网站备案的核验单百度检索入口 网站建设 策划方案书班级优化大师头像 外贸商城网站制作网站模板及源码 手机网站php源码谷歌流量代理代理 做暧暖ox免费网站100个裂变营销案例 厦门网站设计多少钱百度搜索智能精选 flash网站源文件百度指数只能查90天吗
一.原理分析 我们对springboot项目进行原理分析,就要从springboot的启动类入手。在启动类上有一个注解@SpringBootApplication,这个注解是我们进行原理分析和源码跟踪的关键。我们进入看看。该注解也是Springboot框架中最重要的注解。 进入SpringBootApplication注解中,我们可以看到如下: 这些注解中只有一个注解的功能我们还不清楚,就是@EnableAutoConfiguration,看来这个注解就是实现自动配置的关键注解。 下面我们就来研究这个注解。 二. @EnableAutoConfiguration 上一小节中我们提到,@EnableAutoConfiguration这个注解以及以enable打头的注解当中封装了一个注解,就是@Import注解。通过@Import来导入指定的bean或者配置类。我们进入到@EnableAutoConfiguration这个注解当中,发现果然有一个 @Import注解。@Import注解当中封装的是一个AutoConfigurationImportSelector类。而 ImportSelector是一个接口,AutoConfigurationImportSelector类其实就是 ImportSelector这个接口的实现类,下面我们就来找这个ImportSelector接口。 接下来我们进入到AutoConfigurationImportSelector这个实现类当中。当前类实现了DeferredImportSelector这个接口。 我们再进入DeferredImportSelector,这个接口又继承了ImportSelect这个接口。 在ImportSelect这个接口中有一个非常重要的接口方法selectImports,这个方法的返回值String类型的数组中封装的是哪些类我们需要导入到IOC容器当中。里面封装的就是这些类的全类名。 下面我们就要找到ImportSelector这个接口的实现类,也就是AutoConfigurationImportSelector这个类中的selectImports这个方法,我们就重点关注selectImports这个方法的返回值。该返回值是一个String类型的数组,使用StringUtils这个工具类的toStringArray方法返回,该方法传递了一个autoConfigurationEntry对象,该对象调用getConfigurations()方法。 autoConfigurationEntry对象是调用getAutoConfigurationEntry这个方法获取到的,因此下面的关键就是查看getAutoConfigurationEntry这个方法。 这个方法的返回值是一个AutoConfigurationEntry对象,里面传递两个参数,一个是configurations,一个是exclusions。 通过上面的selectImports方法可以知道最终它调用了getConfigurations()这个方法,因此关键点就在于这个configurations参数。我们可以看到configurations这个List集合是通过getCandidateConfigurations这个方法获得的。我们查看该方法。 在该方法中我们在生成configurations这个List集合的时候调用了这么一个方法loadFactoryNames,在下面有一个断言,用来判断configurations这个集合是否是空的。如果是空的就会报下面的信息:没有META-INF/spring.factories或META-INF/spring/org......这两个自动配置的类被发现。 也就是说在spring项目执行的时候会自动加载这两个文件中所配置的信息,把这两个文件中配置的信息加载出来后封装到list集合中,最终list集合中的内容再封装到String[]类型的数组中。String[]类型的数组中存储的就是要加载到IOC容器中的bean或者配置类。 现在的关键点就是要找到这两份文件。 3.自动配置文件 这两份文件在我们引入的起步以来当中基本上都有。spring-boot-autoconfigure这个这个依赖就是自动配置的依赖,在这个jar包当中就会有这类文件。 mybatis依赖jar包中也有 那么我们就找到这些jar包,看看里面都配置了什么信息。我们找到library 点击在这里面,找到spring.factories文件。里面配置了很多信息。 这些信息就是这些要自动配置的类的全类名。 以及第二个文件org.springframework.boot.autoconfigure.AutoConfiguration.imports,里面配置的都是全类名。这些文件中的内容会被读取出来最总加载到IOC容器中成为IOC容器中的bean对象。这些类都是自动配置类。 之前我们使用的Gson对象,虽然我们没有配置但是可以直接使用,原因就是进行了自动配置。我们可以找打Gson这个自动配置类,查看他的源码。 源码中上面有一个注解@AutoConfiguration,底层就封装了一个注解@Configuration,那就说明当前类是一个配置类。 之所以能够完成自动配置,就是因为里面定义了一个gson方法,且返回值就是Gson类型的数据,上面定义了一个@Bean注解。因此才可以直接使用@Autowired注入该bean对象直接使用。 4.总结 @SpringBootApplication注解中封装了三个关键注解@SpringBootConfiguration,@ComponentScan,@EnableAutoConfiguration。而在@EnableAutoConfiguration底层封装了一个@Import注解。传入的是ImportSelector接口的实现类,这个接口中的方法selectImports()方法,导入了两个文件,这两个文件中指定了,要自动配置的类的全类名。 注:spring.factories配置文件已被移除。 以上就是spring实现自动配置的原理。 查看全文 http://www.dtcms.com/wzjs/215988.html 相关文章: 肇庆网站seo网页设计工资一般多少 做网站学完html网站页面禁止访问 bsci网站的cap是如何做成都网站建设方案外包 学校网站建设电话做网站用哪个软件 网站建设实训报告的内容怎么写百度搜索引擎的使用方法 洛卡博网站谁做的b站软件推广大全 宝安疫情最新消息今天又封了seo这个行业怎么样 做纱窗修水管的一个网站seo优化服务商 网站建设话术宝典网络营销专业大学排名 怎么建一个卖东西的网站东莞网站公司哪家好 网站开发维护岗位职责搜狗网站收录提交入口 南宁律师网站建设网推怎么做最有效 茶叶电子商务网站建设的结论广东seo推广方案 开发网站大概要多少钱福州网站开发公司 深圳做app网站设计软件开发外包公司 网站排名怎么靠前免费宣传网站 网站建设报价单下载搜索引擎营销怎么做 站长工具关键词申请自媒体平台注册 外包做的网站可以直接去收录吗网络免费推广平台 网站建设项目说明书模板推销一个产品的方案 东莞网站建设运营方案如何进行推广 如何设计的英文网站竞价托管如何托管 静态网站开发一体化课程百度一下百度网页官 网站备案的核验单百度检索入口 网站建设 策划方案书班级优化大师头像 外贸商城网站制作网站模板及源码 手机网站php源码谷歌流量代理代理 做暧暖ox免费网站100个裂变营销案例 厦门网站设计多少钱百度搜索智能精选 flash网站源文件百度指数只能查90天吗