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

做论坛网站如何赚钱的百度云官方网站

做论坛网站如何赚钱的,百度云官方网站,陕icp网站建设,别墅设计 网站模板前言 本文简要介绍SpringBoot的自动配置原理。 本文讲述的SpringBoot版本为:3.1.2。 前置知识 在看原理介绍之前,需要知道Import注解的作用: 可以导入Configuration注解的配置类、声明Bean注解的bean方法;可以导入ImportSele…

前言

本文简要介绍SpringBoot的自动配置原理。

本文讲述的SpringBoot版本为:3.1.2。

前置知识

在看原理介绍之前,需要知道@Import注解的作用:

  • 可以导入@Configuration注解的配置类、声明@Bean注解的bean方法;
  • 可以导入ImportSelector的实现类;【自动配置原理用到注解的这个作用】
  • 可以导入ImportBeanDefinitionRegistrar的实现类。

原理介绍

从启动类入手

一个常规的SpringBoot项目的启动类内容如下

image-20240411160551186

从启动类上的@SpringBootApplication入手

image-20240411160719344

三个注解箭头指示的注解,各有各的作用:

  • @SpringBootConfiguration:组合了@Configuration注解,表示这是一个配置类
  • @EnableAutoConfiguration:允许自动配置
  • @ComponentScan:Spring的组件扫描,默认扫描main方法所在类所在的包及其子包

其中第二个注解@EnableAutoConfiguration是实现自动配置的关键。

@EnableAutoConfiguration注解入手

image-20240411161048600

可以看到该注解中有一个@Import注解,先说结论:在AutoConfigurationImportSelector类中加载了哪些需要自动配置的Bean,并完成加载,注入到IOC容器中。

到AutoConfigurationImportSelector类

AutoConfigurationImportSelector类入手

image-20240411161526906

可以看出:AutoConfigurationImportSelector类是org.springframework.boot.autoconfigure包下的一个类,实现了DeferredImportSelector等接口

  • org.springframework.boot.autoconfigure:望名生意,自动配置,就是在该包里面,规定了哪些Bean需要配置。
  • DeferredImportSelector:该接口是实现自动配置的关键,里面的selectImports方法规定了哪些Bean需要自动配置。

往下滑,看AutoConfigurationImportSelector类的selectImports方法

image-20240411162621664

红框所示代码:返回了需要自动配置的Bean列表。

this.getAutoConfigurationEntry方法入手

protected AutoConfigurationEntry getAutoConfigurationEntry(AnnotationMetadata annotationMetadata) {if (!this.isEnabled(annotationMetadata)) {return EMPTY_ENTRY;} else {AnnotationAttributes attributes = this.getAttributes(annotationMetadata);// 获取该类所在包下的META-INF/spring/目录中以.imports为后缀结尾的文件里面的内容,作为候选配置列表List<String> configurations = this.getCandidateConfigurations(annotationMetadata, attributes);// 去除重复的配置configurations = this.removeDuplicates(configurations);// 排除部分元注解信息中需要排除的配置Set<String> exclusions = this.getExclusions(annotationMetadata, attributes);this.checkExcludedClasses(configurations, exclusions);configurations.removeAll(exclusions);// 过滤掉一些暂时不生效的配置:加了如下注解的bean:@OnxxxConditionconfigurations = this.getConfigurationClassFilter().filter(configurations);this.fireAutoConfigurationImportEvents(configurations, exclusions);return new AutoConfigurationEntry(configurations, exclusions);}
}

该方法中代码的逻辑如上。就剩一个this.getCandidateConfigurations方法需要再探究,里面规定了从哪个地方寻找需要配置的bean列表。

this.getCandidateConfigurations方法入手

image-20240411163754007

再进入箭头所指向的load方法

image-20240411163828626

可以看到:该方法往包下的META-INF/spring/目录中寻找后缀名为.imports的文件。

到org.springframework.boot.autoconfigure包中看看

从idea左侧的依赖列表里面查看:

image-20240411164032607

image-20240411164117630

点开文件里面任意一个类:

image-20240411164350208

image-20240411164415793

都是一个自动配置类,定义有相应的Bean方法。

至此,SpringBoot的自动配置原理就明白了。

原理总结

  • 启动类中有一个@SpringBootApplication注解,包含了@EnableAutoConfiguration代表开启自动装配
  • @EnableAutoConfiguration注解里面组合了一个@Import注解,这个注解是实现自动配置的关键。
  • @Import注解最终的作用可以总结如下:到spring-boot-autoconfigure包下的META-INF/spring目录中寻找.imports结尾的文件,这里面列举了所有需要自动配置的类,程序会读取这些类并加载(但这些类不会全部加载,因为有的类上面有条件注解,需要满足特定条件时才会生效)
    • spring-boot-autoconfigure包下的AutoConfigurationImportSelector类实现了ImportSelector,并重写了selectImports方法
    • selectImports方法中,定义类自动配置类的加载位置。还有一些配置类的去重操作、排除操作等。
http://www.tj-hxxt.cn/news/128729.html

相关文章:

  • 网站开发网络公seo网络营销课程
  • 如何用python开发网页宁波seo推广推荐公司
  • 移动网站二级域名m开头怎么做博客营销
  • 网站建设的收费标准现在做百度推广有用吗
  • 网站建设与管理总结百度免费推广
  • 建设工程合同司法解释seo研究中心官网
  • 家里公网宽带做网站要备案么如何在百度推广自己的产品
  • 日照东港建设局网站中国网络优化公司排名
  • 安徽省住房建设厅网站百度排行榜明星
  • 遂宁网站开发seo按照搜索引擎的什么对网站
  • 雷山网站建设东莞网站建设优化诊断
  • 同一个域名可以做几个网站吗seo网页优化平台
  • 郑州国际装备制造业会展网站的建设2021小说排行榜百度风云榜
  • wordpress 最好的编辑器开封网站优化公司
  • 凡科网站怎么做授权查询近三年成功的营销案例
  • 代运营公司收费好看的seo网站
  • 专注做一家男生最爱的网站数据分析网
  • 全世界做会展介绍的网站排名营销一体化平台
  • 宁波高端网站制作公司网店推广的作用是什么
  • 面包屑网站导航怎么做麒麟seo
  • wordpress图片 转移oss孔宇seo
  • 网站开发和后期维护费用seo页面优化技术
  • 做网站的公司倒闭了凡科建站app
  • 云南网站建设的价值重庆seo按天收费
  • 最好的wordpress 网站品牌网络推广外包
  • .cn域名注册官方网站如何推广网站方法
  • 北京网站建设小公司有哪些百度企业官网认证
  • 手机网站无法访问的解决方法关键帧
  • 中学建设校园网站方案百度网盘网页版入口
  • 优才网站建设seo文章优化技巧