SpringBoot自定义starters

一、简介

SpringBoot最强大的功能就是把我们常用的场景抽取成了一个个starter(场星动,我们通过引入springboot为我提供的这些场景启动器,我们再进行少量的配置就能使用相应的功能。即使是这样,springboott也不能囊括我们所有的使用场景,往往我们需要自定义starter,来简化我们对springboot的使用。

二、自定义starter

自定义starter的命名规则

SpringBoot提供的starter以spring-boot-starter-xxx的方式命名的。

官方建议自定义的starter使用 xxx-spring-boot-starter命名规则。以区分SpringBoot生态提供的starter。

官方建议自定义的autoconfigure使用 xxx-spring-boot-autoconfigure命名规则。以区分SpringBoot生态提供的autoconfigure。

现有一需求,创建一个starter,其功能是为项目提供首页,限制是只有在配置属性clyu.hello.name后,才会生效

其项目结构如下
在这里插入图片描述

2.1 创建clyu-spring-boot-autoconfigure
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--导入配置文件处理器,配置文件进行绑定就会有提示-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
       </dependency>
    </dependencies>
2.2 HelloProperties
@ConfigurationProperties(prefix = "clyu.hello")
public class HelloProperties {
    private String name;
     //忽略get和set方法
}
2.3 HelloController
@RestController
public class HelloController {
    private HelloProperties helloProperties;
    public HelloController(HelloProperties helloProperties){
     this.helloProperties = helloProperties;
    }
    @RequestMapping("/")
    public String hello(){return "欢迎"+helloProperties.getName(); }
}
2.4 HelloAutoConfigure
@Configuration
@ConditionalOnProperty("clyu.hello.name") //项目中必须有这个
@EnableConfigurationProperties(HelloProperties.class)
//@EnableConfigurationProperties 相当于把使用 @ConfigurationProperties 的类进行了一次注入
public class HelloAutoConfigure {

    @Autowired
    private HelloProperties helloProperties;

    @Bean
    public HelloController helloController(){
        return new HelloController(helloProperties);
    }
}
2.5 spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  clyu.spring.boot.autoconfigure.HelloAutoConfigure
2.6 创建clyu-spring-boot-starter

引入clyu-spring-boot-autoconfigure

<dependencies>
    <!--autoconfigure-->
    <dependency>
        <groupId>learning</groupId>
        <artifactId>clyu-spring-boot-autoconfigure</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>

    <!--如果当前starter还需要其他的类库就在这里引用-->
</dependencies>
三、测试
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>learning</groupId>
        <artifactId>clyu-spring-boot-starter</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>

在配置类加入下面配置

clyu.hello.name = "hello"

在这里插入图片描述
去掉配置中的clyu.hello.name

#clyu.hello.name = "hello"

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值