教你如何自定义SpringBoot中starter启动器
2020-03-02 本文已影响0人
弹钢琴的崽崽
starter:
1、这个场景需要使用到的依赖是什么?
2、如何编写自动配置

3、模式:
- 启动器只用来做依赖导入;
- 专门来写一个自动配置模块;
- 启动器依赖自动配置;别人只需要引入启动器(starter)
- mybatis-spring-boot-starter;自定义启动器名-spring-boot-starter
1. 创建一个空的工程

2. 添加module-启动器

这是一个启动器
3. 再创建一个模块-自动配置
用Spring Initializr创建

这个模块是做自动配置的
SpringBoot版本1.5.10
不引入任何模块
4.启动器模块引入自动配置模块的坐标

删掉自动配置模块中无用的文件
主配置文件,主启动类,pom.xml文件中test依赖,插件依赖都可以删掉

5. 自动配置模块的编写
a. 把所有可以配置的属性绑在HelloProperties类

package com.atguigu.starter;
@ConfigurationProperties(prefix = "atguigu.hello")
public class HelloProperties {
private String prefix;
private String suffix;
public String getPrefix() {
return prefix;
}
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public String getSuffix() {
return suffix;
}
public void setSuffix(String suffix) {
this.suffix = suffix;
}
}
b. HelloService

c. 自动配置类

package com.atguigu.starter;
@Configuration
@ConditionalOnWebApplication //web应用才生效
@EnableConfigurationProperties(HelloProperties.class)//让属性文件生效
public class HelloServiceAutoConfiguration {
@Autowired
HelloProperties helloProperties;
@Bean
public HelloService helloService(){
HelloService service = new HelloService();
service.setHelloProperties(helloProperties);
return service;
}
}
d. spring.factories启动加载配置类
让自动配置类生效还得在类路径下写一个文件夹META-INF
在此文件夹下放一个文件spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.atguigu.starter.HelloServiceAutoConfiguration
6. 把整个工程装到maven仓库中
第一步:装自动配置包

第二部:装启动器

这样就可以拿坐标引入了
7. 测试工程
新建SpringBoot项目选中web模块,版本还是1.5.10
引入自定义启动器的坐标

a. Controller测试

b.前后缀在配置文件中配置

c. 访问成功
