自定义一个SpringBoot - Starter

目录

论述

实现

自定义Starter

1、创建springboot - starter工程

2、创建配置类,用于其他工程使用starter的时候,配置的数据信息

3、创建一个service,用于测试

4、创建一个AutoConfig,用于自动配置

5、创建spring.factory文件在META-INF文件夹下(文件下手动创建)

 6、打包并且将这个jar添加到maven中

测试starter项目

1、重新创建新的springboot工程

 2、直接在测试类中去测试

遇到的一些问题

Found multiple @SpringBootConfiguration annotated classes [Generic bean: ……


论述

1、首先starter也是一个springboot项目

2、我们完成这个项目,并将其打包到maven中,从而供其他项目工程的使用

实现

1、springboot在启动的时候,会先扫描到spring.factory文件,去创建该文件中的类并存储到ioc中,一般在该文件下都是AutoConfiguration自动配置类,在自动配置类中,将@bean注解的一系列的类注入到ioc容器中,再将AutoConfiguration注入到ioc中

2、在注入自动配置类之前,我们在AutoConfiguration上面导入了一个properties的类,配置信息类

总结:首先ioc先加载properties配置类,从application.yaml或者application.propties中去获取信息,使用无参构造并设置 (反射),再来加载AutoConfiguration类,但是加载此类先要加载完里面的@bean注解的方法,将其全部注入到ioc之后,再来注入AutoConfiguration,从而达到springboot的自动装配

自定义Starter

1、创建springboot - starter工程

2、创建配置类,用于其他工程使用starter的时候,配置的数据信息

@Data
@ConfigurationProperties(prefix = "mystarter")
public class MyStarterProperties {
    private String name;
    private String pass;
}

3、创建一个service,用于测试

public class MyStarterService {

    private String name;
    private String pass;

    public MyStarterService(String name, String pass) {
        this.name = name;
        this.pass = pass;
    }

    public String doService(String value) {
        return this.name + " -- " + value + " -- " + this.pass;
    }
}

4、创建一个AutoConfig,用于自动配置

@Configuration
@ConditionalOnClass(MyStarterService.class)
@EnableConfigurationProperties(MyStarterProperties.class)
public class MyStarterAutoConfiguration {

    @Resource
    private MyStarterProperties properties;

    @Bean
    @ConditionalOnMissingBean // 确保单例模式
    @ConditionalOnProperty(
            prefix = "mystarter", // 前缀
            value = "having", // 必须含有这个属性的配置才能注入
            havingValue = "true" // 必须为true的时候才注入
    )
    public MyStarterService myStarterProperties() {
        return new MyStarterService(properties.getName(), properties.getPass());
    }
}

5、创建spring.factory文件在META-INF文件夹下(文件下手动创建)

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.jieyaao1212.config.MyStarterAutoConfiguration

 6、打包并且将这个jar添加到maven中

setting  ==>  Project Structure……

 

 打包完成之后,out目录下找到打成的jar

 

 在cmd中运行

mvn install:install-file -DgroupId=com.jieyaao1212 -DartifactId=mystarter -Dversion=1.3.0 -Dpackaging=jar -Dfile=F:\idea-springboot\my-starter\out\artifacts\my_starter_jar\my-starter.jar

自己修改 groupId、artifactId、version、Dfile的jar地(你打包的地址)

 注意,在打包完成之后,我们需要确定这个打包完成的位置是不是我们maven中的本地仓库位置,我的被我修改之后但是打包的位置没有任何的变化,手动复制粘贴到本地仓库中

测试starter项目

1、重新创建新的springboot工程

在新的项目中导入这个jar

 

 2、直接在测试类中去测试

遇到的一些问题

Found multiple @SpringBootConfiguration annotated classes [Generic bean: ……

找不到启动类,在注解中去指定启动类即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值