SpringBoot相关知识点总结

1 SpringBoot的目的

简化开发,开箱即用。

2 Spring Boot Starter

Spring Boot Starter 是 Spring Boot 中的一个重要概念,它是一种提供依赖项的方式,可以帮助开发人员快速集成各种第三方库和框架。Spring Boot Starter 的目的是简化 Spring 应用程序的依赖管理,将一组相关的依赖项打包在一起,并提供一个依赖项描述文件,使开发人员可以快速集成。

每个 Starter 都是一个 Maven 或 Gradle 项目,其中包含了一组预定义的依赖项,,以及一些预配置的设置,可以快速启用某种特定功能。

Spring Boot Starters 的主要作用包括以下几个方面:

简化依赖管理:Spring Boot Starters 封装了一组常用的依赖项,如数据库连接、Web 开发、安全认证等,开发者只需要引入相应的 Starter,就能够自动获取所有需要的依赖项,无需手动配置大量的依赖项和版本号。

预配置设置:每个 Starter 都提供了一些预配置的设置,如默认的配置属性、bean 的定义等,可以帮助开发者快速搭建出符合需求的应用程序。这些预配置的设置可以减少开发者的配置工作,提高开发效率。

**功能模块化:**Spring Boot Starters 将常用的功能模块化,使得开发者可以根据需求选择合适的 Starter,并灵活组合使用,从而构建出符合需求的应用程序。这种模块化的设计使得应用程序的开发、维护和扩展更加简单和灵活。

约定优于配置:Spring Boot Starters 遵循 Spring Boot 的约定优于配置的设计原则,通过预定义好的依赖项和配置,简化了应用程序的配置过程,使得开发者可以更专注于业务逻辑的实现,而无需过多地关注底层技术细节。

Spring Boot Starter 的实现原理可以分为两个方面:依赖管理和自动配置。

3 @SpringBootApplication的作用

`@SpringBootApplication` 是 Spring Boot 中一个注解,它的作用是标记一个主类,通常是 Spring Boot 应用程序的入口类。这个注解实际上是一个组合注解,包含了以下几个注解:

  1. `@SpringBootConfiguration`:指示该类是 Spring Boot 应用程序的配置类 ,相当于传统 Spring 应用程序中的 XML 配置文件。其中包含了应用程序的一些配置信息,如数据源配置、Bean 定义等。这样的配置类通常会被 @ComponentScan 注解扫描,并被 Spring 容器管理和使用。

  2. `@EnableAutoConfiguration`:启用 Spring Boot 的自动配置机制,根据应用程序的依赖和类路径上的配置,自动配置应用程序的各种组件。

  3. `@ComponentScan`:扫描当前包及其子包下的组件,包括注解了 `@Component`、`@Service`、`@Controller` 等注解的类,将它们注册到 Spring 容器中。

通过在主类上添加 `@SpringBootApplication` 注解,可以简化 Spring Boot 应用程序的配置和启动过程,开发者无需手动配置 XML 文件或者 Java 配置类,Spring Boot 会根据约定优于配置的原则自动完成大部分的配置和初始化工作。

总的来说,`@SpringBootApplication` 注解标记了一个类作为 Spring Boot 应用程序的主类,并启用了 Spring Boot 的自动配置机制和组件扫描机制,简化了应用程序的配置和启动过程,提高了开发效率。

3 SpringBoot的自动配置是如何实现的

简单来说就是自动去把第三方组件的Bean装载到IOC容器中,不需要开发人员再去

写Bean相关的配置,在springboot应用里面只需要在启动类上去加上

@SpringBootApplication注解,就可以去实现自动装配,它是一个复合注解真正去

实现自动装配的注解是@EnableAutoConfiguration这样一个注解,自动装配的实

现呢,主要依靠三个核心的关键技术。

1 引入Starter组件 ,这个组件里面必须包含有一个

@Configuration配置类,而在这个配置类里面,我们需要通过@Bean这个注解去声

明需要装配到IOC容器里面的Bean对象。

2 拿到第三方组件的配置类,Springboot使用基于约定去Starter组件的路径下META-INF/spring.factories里去找配置类

第三方jar包里面的配置类全路径都将放在classpath:/META-

INF/spring.factories文件里面,这样的话springboot就可以知道第三方jar包里面

这个配置类的位置。这个步骤主要是用到了spring里面的SpringFactoriesLoader

3 动态导入配置类 ,对配置类加载springboot拿到所有第三方jar包里面声明的配置类以后,ImportSelector 接口为 Spring 提供了一种动态导入配置类的机制,使得配置更加灵活和可扩展。通过合理地使用 ImportSelector 接口,你可以根据需求动态地加载不同的配置,从而实现更加灵活和可配置的应用程序。

实现ImportSelector接口,然后用@Import注解导入实现的 ImportSelector类,从而做到动态导入配置。

Spring Boot 在自动装配时会检测条件化注解。条件化注解用于控制特定的配置类或者 Bean 是否应该被应用到应用程序上下文中。

Spring Boot 通过@EnableAutoConfiguration开启自动装配,通过 SpringFactoriesLoader 最终加载META-INF/spring.factories中的自动配置类实现自动装配,自动配置类其实就是通过@Conditional按需加载的配置类,想要其生效必须引入spring-boot-starter-xxx包实现起步依赖

相关推荐
刘一说4 分钟前
CentOS 系统 Java 开发测试环境搭建手册
java·linux·运维·服务器·centos
Victor3569 分钟前
Redis(14)Redis的列表(List)类型有哪些常用命令?
后端
Victor35610 分钟前
Redis(15)Redis的集合(Set)类型有哪些常用命令?
后端
卷福同学11 分钟前
来上海三个月,我在马路边上遇到了阿里前同事...
java·后端
bingbingyihao2 小时前
多数据源 Demo
java·springboot
在努力的前端小白7 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
bobz9659 小时前
小语言模型是真正的未来
后端
一叶飘零_sweeeet9 小时前
从繁琐到优雅:Java Lambda 表达式全解析与实战指南
java·lambda·java8
DevYK9 小时前
企业级 Agent 开发实战(一) LangGraph 快速入门
后端·llm·agent
艾伦~耶格尔10 小时前
【集合框架LinkedList底层添加元素机制】
java·开发语言·学习·面试