Spring Boot中starter封装

tech2026-01-03  3

starter原理

SpringBoot 在启动时会去依赖的starter包中寻找 resources/META-INF/spring.factories 文件,然后根据文件中配置的Jar包去扫描项目所依赖的Jar包,这类似于 Java 的 SPI 机制。根据 spring.factories 配置加载AutoConfigure类。根据 @Conditional 注解的条件,进行自动配置并将Bean注入Spring Context 上下文当中。

starter封装

1.准备好要封装的mvn项目converter-core 2.新建一个module项目converter-spring-starter,在最外层pom文件中引入该module。

<module>converter-spring-starter</module>

3 在converter-spring-starter下的pom文件中引入依赖

<dependency> <groupId>com.converter</groupId> <artifactId>converter-core</artifactId> <version>${converterVersion}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </exclusion> <exclusion> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency>

4 自动配置类 使用@Configuration和@Bean配置

@Configuration @ConditionalOnClass(prefix=xxx.class) public static void AutoConfig(){ @Bean public Config msgConfig(){ return new Config(); } }

5 新建启动文件。 在resource下新建META-INF文件夹,并在下面新建spring.factories文件

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ x.x.x.AutoConfig

6 启动类 编写项目入口启动类

@SpringBootApplication public class ConverterApplication(){ public static void main(String[]args){ SpringApplication.run(ConverterApplication.class); } }

测试

1 测试类包名和启动类包名一致 测试类代码

@RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = ConverterApplication.class) public class BaseTest{ @Autowired private Config msgConfig; @Test public void Test(){ 测试代码; } }

@SpringBootTest注解是一个Spring Boot提供的注解,通过这个注解可以使JUnit单元测试跑在Spring Boot的运行环境中。

@RunWith注解是一个运行器,其接受一个类的签名来指定是使用什么类、在什么环境下运行。 @RunWith(JUnit4.class)就是指用JUnit4来运行。 @RunWith(SpringJUnit4ClassRunner.class)就是让测试运行于Spring测试环境。

2 在test/resource中进行文件配置

最新回复(0)