如何定义自己的spring starter
为什么要开发 spring starter
为了理解为什么我们需要开发spring starter这样的一个工具,主要原因还要从spring mvc开始说起。因为早期的MVC框架中,如果要引入其他的依赖,需要在项目的xml中配置很多。那如果依赖的的越多,或者项目的越复杂,那么加入的配置也会越多,最终导致我们xml文件也会非常的复杂。
因为有了👆🏻的痛点之后,spring加入了auto-configuration的技术
- 什么是auto-configuration?
- 可以把classpath中的jar包自动的导入在JVM中
- 需要被auto-configuration的依赖都会被列举在spring.property文件中
- 使用注解AutoConfiguration或者 SpringBootApplication在项目中加上,就可以使用auto-configuration的特性
- 在pom文件中加入
- < dependency >
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>- Cannot Resolve Spring Boot Configuration Properties Error
- 加入了上述依赖之后,没有重新构建的时候都会在target/classes/创建’META-INF/‘
- 什么是auto-configuration?
什么是spring starter
- starter可以在spring boot启动的时候把一些开源的资源文件或者一些配置文件提前加载到java bean中,这样就可以避免一些依赖的重复引入
- auto configuration class
- 在resource/META-INF文件目录下,创建一个文件spring.factories,当spring boot启动的时候,加载spring.factories中的包含的对象
1
2
3
4
5
6# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,\
org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration,\
org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration - 不是加到了这个文件中,就会都能够正常使用,只是spring boot在启动的时候,会将这些类(以及相关的beans)加载到java bean中
- 这些被引用的类,就可以被开箱即用
- 在resource/META-INF文件目录下,创建一个文件spring.factories,当spring boot启动的时候,加载spring.factories中的包含的对象
- 从application.property中装载自定的属性
- 使用注解**ConfigurationProperties(prefix = “timeout”)**,关联java类中的属性和application中的关系
- 使用注解Configuration定义java bean类型
- 创建MATE-INF文件夹,并在创建additional-spring-configuration-metadata.json文件定义需要自动装载的property的名字
- 如何自定一个starter
- 定义自动配置的模块
- 将需要自动化加载的类添加在configuration文件中,并加上注解ConditionalOnClass
- pom文件中添加spring-boot-autoconfigure
- 在srping.factories中加上对应的configuration
- start命名规则
- 不能以spring boot开头
- 以name-spring-boot-starter的格式来命名
- 自定中的starter不能在pom文件中添加其他的starter
如何使用custom starter
- 运行
mvn package
生成jar - 导入jar
mvn install:install-file
- 将jar复制到当前目录下,pom引用时,加入system的标签,读取本地的jar
如何配置slf4j的日志格式
- 引入spring-boot-starter-log4j2的pom依赖
- 排除其他引入了logger的started,运行命令
mvn dependency:tree
检查引入logger的dependency - 如果遇到问题,可能需要删除对应的external library,然后再用reload pom依赖
- 加入log4j2.xml在resource目录下
- Title: 如何定义自己的spring starter
- Author: Xiao Qiang
- Created at : 2023-03-05 11:43:13
- Updated at : 2025-03-08 10:49:30
- Link: http://fdslk.github.io/tech/java/spring-boot/starter/2023/03/05/java-customer-starter/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments