【个人技术经验及开发技巧分享】 【个人技术经验及开发技巧分享】
首页
  • 操作系统初识
  • JAVA基础
  • JVM
  • 开发框架
  • Redis
  • Zookeeper
  • 消息中间件
  • 持久化
  • 算法
  • 网络
  • 系统架构
  • 并发编程
  • 框架
  • 开发杂货
  • 线上排查
  • 技巧备忘
  • 部署指南
  • 版本管理
  • 工作流程
  • 发版流程
  • 友情链接
  • 网站备忘
  • 在线工具
  • 学习
  • 各种云
  • 应用下载

Louis

首页
  • 操作系统初识
  • JAVA基础
  • JVM
  • 开发框架
  • Redis
  • Zookeeper
  • 消息中间件
  • 持久化
  • 算法
  • 网络
  • 系统架构
  • 并发编程
  • 框架
  • 开发杂货
  • 线上排查
  • 技巧备忘
  • 部署指南
  • 版本管理
  • 工作流程
  • 发版流程
  • 友情链接
  • 网站备忘
  • 在线工具
  • 学习
  • 各种云
  • 应用下载
  • 操作系统初识

  • JAVA基础

  • JVM

  • 开发框架

    • SpringMVC
    • Spring
    • Mybatis
    • Sentinel
    • Spring Security Oauth2
    • SpringBoot
      • 1 自动装配原理
        • 1.1 注解说明
        • 1.2 自动配置生效
        • 1.3 总结
    • Spring Cloud Gateway
  • Redis

  • Zookeeper

  • 消息中间件

  • 持久化

  • 算法

  • 网络

  • 系统架构

  • 学习笔记
  • 开发框架
luoxiaofeng
2022-10-21
目录

SpringBoot

# 1 自动装配原理

# 1.1 注解说明

SpringBoot 的启动类上有一个 @SpringBootApplication 注解,这是一个复合注解或派生注解,在 @SpringBootApplication 里有一个注解 @EnableAutoConfiguration 用于开启自动配置。

image-20221021163928393

@EnableAutoConfiguration也是一个派生注解,其中的关键功能由 @Import 提供,其导入的AutoConfigurationImportSelector 的 selectImports() 方法通过 SpringFactoriesLoader.loadFactoryNames() 扫描所有具有 META-INF/spring.factories 的jar包。找到所有配置类的全类名对应的class,然后将所有自动配置类加载到Spring容器中。

image-20221021171457621

image-20221021171607762

spring-boot-autoconfigure-xxx.jar 里就有一个这样的 spring.factories 文件。

image-20221021180750387

# 1.2 自动配置生效

每一个XxxxAutoConfiguration自动配置类都是在某些条件之下才会生效的,这些条件的限制在Spring Boot中以注解的形式体现,常见的条件注解有如下几项:

@ConditionalOnBean:当容器里有指定的bean的条件下。

@ConditionalOnMissingBean:当容器里不存在指定bean的条件下。

@ConditionalOnClass:当类路径下有指定类的条件下。

@ConditionalOnMissingClass:当类路径下不存在指定类的条件下。

@ConditionalOnProperty:指定的属性是否有指定的值,比如@ConditionalOnProperties(prefix=”xxx.xxx”, value=”enable”, matchIfMissing=true),代表当xxx.xxx为enable时条件的布尔值为true,如果没有设置的情况下也为true。
1
2
3
4
5
6
7
8
9

# 1.3 总结

SpringBoot 启动的时候会通过 @EnableAutoConfiguration 注解找到 META-INF/spring.factories 配置文件中的所有自动配置类,并对其进行加载。

而这些自动配置类都是以AutoConfiguration结尾来命名的,它实际上就是一个JavaConfig形式的Spring容器配置类。

它能通过以Properties结尾命名的类中取得在全局配置文件中配置的属性,如:server.port,而XxxxProperties类是通过 @ConfigurationProperties 注解与全局配置文件中对应的属性进行绑定的。

Spring Security Oauth2
Spring Cloud Gateway

← Spring Security Oauth2 Spring Cloud Gateway→

最近更新
01
Spring
10-20
02
Sentinel
10-14
03
ZAB协议
09-23
更多文章>
Copyright © 2022-2023 Louis | 粤ICP备2022060093号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式