【springboot】自定义启动器
本文只对springboot自定义启动器的具体实现进行描述,不涉及springboot自动装配原理的介绍。
对springboot自动配置原理感兴趣的请移步
狂神说SpringBoot02:运行原理初探
【springboot】自动装配原理
springboot自定义启动器的实现步骤如下:
第一步:引入spring-boot-autoconfigure包依赖
在创建好的maven工程在pom中引入spring-boot-autoconfigure的依赖,即需要使用springboot的自动配置能力。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
第二步:新建自动配置类xxxAutoConfiguration
新建自动配置类xxxAutoConfiguration,类上加注解@Configuration指定为配置类,加@ConditionalOnClass注解指定在classpath路径下有指定的class类时才实例化bean同时,配置类中增加方法创建需要bean类例,需加上注解@Bean和@ConditionalOnMissingBean,此注解表示只有在spring容器中没有对应bean实例时进行bean的创建。
配置类如下:
package cn.com.wjqhuaxia;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author wjqhuaxia
* @create 2021-03-29 8:12
*
* 自定义springboot starter的步骤如下:
* 1.在创建maven工程时,在pom中引入spring-boot-autoconfigure的依赖,即需要使用springboot的自动配置能力
* 2.新建自动配置类xxxAutoConfiguration,类上加注解@Configuration指定为配置类,加@ConditionalOnClass注解指定在classpath路径下有
* 指定的class类时才实例化bean
* 同时,配置类中增加方法创建需要的bean类例,需加上注解@Bean和@ConditionalOnMissingBean,此注解表示只有在spring容器中没有对应bean
* 实例时进行bean的创建
* 3.在项目中的resources目录下新建META-INF文件夹,并新spring.factories文件,在文件中指定上一步中写好的配置类
* 如:org.springframework.boot.autoconfigure.EnableAutoConfiguration=cn.com.wjqhuaxia.TestAutoConfiguration
* --------------- 此时,已完成springboot的启动器自定义配置 -----------------------------
* 4.使用时直接从spring容器中取出配置好的bean即可。
*
*/
@Configuration
@ConditionalOnClass({StarterTest.class})
public class TestAutoConfiguration {
@Bean
@ConditionalOnMissingBean(StarterTest.class)
public StarterTest starterTest(){
StarterTest starterTest = new StarterTest();
return starterTest;
}
}
自动配置的目标类如下:
package cn.com.wjqhuaxia;
/**
* 自动配置的-->目标类
* @author wjqhuaxia
* @create 2021-03-29 8:10
*/
public class StarterTest {
public String test(String name){
System.out.println("This is my starter! " + name);
return "This is my starter! " + name;
}
}
第三步:spring.factories文件中指定上一步中写好的配置类
在项目中的resources目录下新建META-INF文件夹,并新建spring.factories文件,在文件中指定上一步中写好的配置类
如:org.springframework.boot.autoconfigure.EnableAutoConfiguration=cn.com.wjqhuaxia.TestAutoConfiguration

此时,已完成springboot的启动器自定义配置
以下为测试类:
package cn.com.wjqhuaxia;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
/**
* @author wjqhuaxia
* @create 2021-03-29 9:35
*/
@SpringBootApplication
public class Application {
@Autowired
private StarterTest starterTest;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@RestController
public class EchoController {
@GetMapping(value = "/echo/{name}")
public String echo(@PathVariable String name) {
return starterTest.test(name);
}
}
}
启动项目并进行测试,即可测试spring容器中是否已存在配置好的自定义配置信息。亲测有效!



浙公网安备 33010602011771号