侧边栏壁纸
博主头像
Mr.D的小破站博主等级

身如柳絮随风扬,无论云泥意贯一

  • 累计撰写 21 篇文章
  • 累计创建 9 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

SpringBoot

Mr.D
2024-10-17 / 0 评论 / 0 点赞 / 3 阅读 / 5596 字

1、你是怎么理解SpringBoot的?

SpringBoot是一个用来简化Spring应用创建,开发和运行的框架。

SpringBoot核心特性有

  1. 创建独立的Spring应用程序

  2. 内置Tomcat,Jetty,Undertow(无需部署war文件)

  3. 提供starter简化配置

  4. 尽量进行Spring和第三方库的自动化配置

  5. 提供生产就绪功能,例如指标,健康检查和外部化配置。

  6. 完全无需代码生成,无序xml配置

2、SpringBoot自动装配原理【重要】

Spring Boot的自动装配实际上是从META-INF/spring.factories文件中获取到对应的需要进行自动装配的类,并生成相应的Bean对象,然后将它们交给Spring容器进行管理

  1. 在Spring Boot项目中有一个注解@SpringBootApplication,这个注解是对三个注解进行了封装:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan

    其中@EnableAutoConfiguration是实现自动化配置的核心注解。

  2. 该注解通过@Import注解导入AutoConfigurationImportSelector,这个类实现了一个导入器接口ImportSelector。在该接口中存在一个方法selectImports,

  3. 该方法的返回值是一个数组,数组中存储的就是要被导入到spring容器中的类的全类名。在AutoConfigurationImportSelector类中重写了这个方法,

  4. 该方法内部就是读取了项目的classpath路径下META-INF/spring.factories文件中的所配置的类的全类名。

  5. 在这些配置类中所定义的Bean会根据条件注解所指定的条件来决定是否需要将其导入到Spring容器中。

3、SpringBoot如何自定义Starter【重要】

  1. 首先创建一个starter工程(start结构类似于SpringBoot项目结构),pom文件导入相关依赖,自己编写自定义starter的java配置(编写功能模块)

  2. 在这个类上面编写一个Configuration注解表明是个配置类,我们还会去编写一个ConditionalOnClass,去检测我们是否导入相应的jar,如果有,自动装配就会生效。该类实现的功能会以配置组件的形式加入IOC容器中,方便被扫描。

  3. 在项目下创建一个MENT-INF文件夹,并在该文件夹下创建spring.factories文件,保证我们所自定义的配置类加入候选配置中(自己写的自动装配的类配置到spring.factories文件中)

  4. 打包部署到仓库里

  5. springboot工程中直接引入打好包的依赖,直接使用。

4、SpringBoot核心

  • 自动装配

    • 它可以让应用程序快速便捷地进行配置,无需手工编写配置文件。在启动应用程序时,Spring Boot会自动加载已经定义好的配置文件(例如application.properties)

  • 起步依赖

    • 提供各种常用的依赖库,根据自己的需求自动导入依赖,能够快速构建应用程序并且直接使用。

    • @SpringBootApplication

      • @SpringBootApplication:目的是开启自动配置,并表示该类为主启动类。

      • @EnableAutoConfiguration:启用springboot自动配置,自动所有扫描classpath目录下面所有jar中的spring.factories文件实现配置类批量注册

        • @AutoConfigurationPackage:添加该注解的类所在的package 作为 自动配置package 进行管理

        • @Import(AutoConfigurationImportSelector.class):将spring.factories里面的key为EnableAutoConfiguration对应的值导入spring容器中,满足条件的的才导入

      • @SpringBootConfiguration:标志该类为springboot配置类

  • run方法

    • 根据应用类型,创建spring容器

    • 启动web容器

0

评论区