SpringBoot之自定义starter

1、springboot场景启动器的作用:

  • 引入相关的依赖jar包
  • 自动完成bean的配置和加载

2、命名规范

  • 官方的starter命名应当遵循:spring-boot-starter-xxx,可以不加版本号,因为父依赖已经添加
  • 第三方的starter命名应当遵循:xxx-spring-boot-starter,必须添加版本号

3、如何编写一个stater

3.1新建一个项目,导入依赖

<dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        
        <!--加入这个可以写配置文件的时候有自动提示的效果-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!--不加这个配置,打包出来的stater可能无法使用-->
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>

3.2新建一个properties

@ConfigurationProperties(prefix = "com.wisdom")
public class HelloServiceProperties {
    private String name = "wisdom";

    private String hobby = "basketball";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }

}

3.3新建功能实现类

public class HelloServiceConfiguration {

    private String name;

    private String hobby;

    public String getName() {
        return "name is " + name;
    }

    public String getHobby() {
        return "hobby is " + hobby;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }
}

3.4新建自动配置实现类

@Configuration
@EnableConfigurationProperties(HelloServiceProperties.class)
@ConditionalOnClass(HelloServiceConfiguration.class)
@ConditionalOnProperty(prefix = "com.wisdom", value = "enabled", matchIfMissing = true)
public class HelloServiceAutoConfiguration {

    @Autowired
    private HelloServiceProperties helloServiceProperties;

    @Bean
    @ConditionalOnMissingBean(HelloServiceConfiguration.class)
    public HelloServiceConfiguration helloServiceConfiguration() {

        HelloServiceConfiguration helloService = new HelloServiceConfiguration();
        helloService.setName(helloServiceProperties.getName());
        helloService.setHobby(helloServiceProperties.getHobby());

        return helloService;
    }
}

3.5在resources文件夹下新建META-INF文件夹,并新建文件spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
 com.hpu.demo.config.HelloServiceAutoConfiguration

运行mvn clean install就可以完成打包

4、如何使用自定义的stater

4.1新建一个测试项目,引入自定义的stater

<!--自定义的stater-->
    <dependency>
        <groupId>com.hpu</groupId>
        <artifactId>demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>

4.2编写配置文件

com.wisdom.hobby=study
com.wisdom.name=pss

4.3编写单元测试

@Autowired
    private com.hpu.demo.service.HelloServiceConfiguration helloServiceConfiguration;

    @Test
    void contextLoads() {
        System.out.println(helloServiceConfiguration.getName());
    }
输出:name is pss
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值