SpringBoot理解
Time: 2024-09-23 Monday 20:22:01
Author: Jackasher
SpringBoot理解
@Configuration代表以前的配置文件,Bean注解代表Bean标签,@Import是导入类,直接把类导入到容器里面,
@ConfigurationProperties, 让该组件与配置文件绑定,以prefix的前缀属性值会绑定在属性里面,
SpringBoot如何自动装配
- 导入Starter
- xxxAutoConfiguration生效
- 组件
- xxxproperties
- 配置文件
要将自己的框架整合进 Spring Boot 中,可以按照以下步骤进行:
1. 创建 Spring Boot Starter
为了让 Spring Boot 自动加载你的框架,最好的方式是创建一个Spring Boot Starter,即自定义的 Spring Boot 自动配置模块。步骤如下:
1.1 定义自动配置类
在你的框架中,创建一个自动配置类,使用 @Configuration
注解,这样 Spring Boot 会自动配置你的框架组件。
1 |
|
1.2 创建 spring.factories
文件
在 src/main/resources/META-INF/spring
目录下创建一个 org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件。这个文件用于告诉 Spring Boot 在启动时加载你的自动配置类。
1 |
|
1.3 确保你的依赖是可自动加载的
将你的框架打包为一个可以依赖的 jar 文件,并在 Spring Boot 项目中添加该依赖。Spring Boot 会自动扫描并加载 org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件中的配置。
2. 整合 @Conditional
注解(可选)
为了让你的框架更加灵活,可以通过 @Conditional
注解来控制配置是否生效,例如在某个配置项启用时才加载某些 Bean。
1 |
|
3. 提供默认配置(可选)
如果你的框架有一些默认配置,可以通过在 application.properties
或 application.yml
文件中提供默认值。
1 |
|
4. 在 Spring Boot 应用中引入你的框架
发布或将你的框架打包成 Maven/Gradle 可引入的依赖,添加到 Spring Boot 项目中即可。例如:
Maven:
1 |
|
所以SpringBoot是通过读取 src/main/resources/META-INF/
目录下 org.springframework.boot.autoconfigure.AutoConfiguration.imports
文件,来纳入Spring的,
外部配置文件
如果想要更改项目不需要重新编译,只需要引入外部配置文件,/config
,./
,以及运行时指定配置文件地址
总结手写starter
首先打开一个SpringBoot项目,然后删改主程序,然后定义自己的程序,最后在一个AutoConfiguration类里面引入所有的组件和配置类,配置类上的注解@ConfigurationProperties(prefix = "jack")
,用于绑定spring配置文件,jack开头的属性会被注入到属性里面
昨天晚上弄了很久都没有搞好,反思一下,一直在程序里显示没有Jack类型的bean,只有手动导入后,才可以使用, 明明很明显的问题就是spring并没有将其注册到容器,我都没有怀疑是META-INF里面的文件出问题,因为不理解Spring的源码才会这样
Swagger文档
之前一直很疑惑前后端的接口怎么做,谁来写,写起来不是很复杂吗,原来市面上有自动生成文档的库,而且原理不难,扫描Controller的注解就可以,我的SpringBoot是配了/warehouse路径的,所以要访问127.0.0.1/warehouse/swageer-ui.html,并且要在拦截器放行所有请求,具体怎么放行,我也不知道,我只直接把拦截器给取消了