如何快速自定义一个Spring Boot Starter!!

目录

引言:

[一. 我们先创建一个starter模块](#一. 我们先创建一个starter模块)

[二. 创建一个自动配置类](#二. 创建一个自动配置类)

[三. 测试启动](#三. 测试启动)


引言:

在我们项目中,可能经常用到别人的第三方依赖,又是引入依赖,又要自定义配置,非常繁琐,当我们另一个项目过程使用的时候,还是同样的操作,以此,为什么我们不直接封装起来成为一个sarter启动类,在我们需要使用的时候,直接就引入依赖,DI注入就可以使用,通过springBoot的自动配置来帮我们加载配置注入!!!用的时候,只需要注入就可以使用了!!!

一. 我们先创建一个starter模块

用来统一管理要导入相关的配置依赖,这样子我们引入一个starter依赖就可以了,通过Maven依赖的传递,其他配置依赖也就传递进来了!!!

**二.**创建一个自动配置类

在创建我们的configuration模块中,在Starter中引入改模块(当然简便的化也可以直接就引入这个模块依赖,也是可以的)

三.欧克,我们就可以在configuration中 来自定义配置类了,并自动配置文件META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件就可以了

就随便来模拟一下了

yam中配置一些属性以便后面获取

java 复制代码
hz:
  name: isHeZ
  age: 18

定义一个helloWorldProperties 类,通过@ConfigurationProperties注解。这个注解用于将配置文件中的属性绑定到Java Bean上,很方便地在Spring应用程序中使用这些配置属性。

如果提升没有配置注解处理器

点击进去,可以看见官网提供的

把这个CV到Pom文件中就可以了

此时爆红

因为当前类不是一个Bean类,一般我们会加一个 @Component来声明当前类是一个配置类,那是在当前配置类项中使用的时候,是会扫描到当前配置类的,现在我们是第三方Bean,其他项目使用的时候是扫描不到,我们可以通过EnableConfigurationProperties 这个注解,直接可以交给IOC容器中成功里面的Bean对象,其实底层还是封装的Import 注解。但是这个只能放在配置类 上或者Bean对象上,Ok我们这里直接把他放到我们自定义配置类上。新键一个自定义配置类

java 复制代码
@Configuration
@EnableConfigurationProperties(helloWorldProperties.class )
public class helloWorldConfiguration {
}

然后接下来配置我们需要用到的@Bean对象了!!!

先建立一个类HelloHz ,并且这里给了一个set方法,到时候把我们的helloWorldProperties引进来

java 复制代码
public class HelloHz {


    private helloWorldProperties helloWorldProperties;


    public void setHelloWorldProperties(helloWorldProperties helloWorldProperties) {
        this.helloWorldProperties = helloWorldProperties;
    }

    public String getThePropertiesName(){
        return helloWorldProperties.getName();
    }

    public Integer getThePropertiesAge(){
        return helloWorldProperties.getAge();
    }

}

欧克,我们在配置类中来声明我们的Bean来完成自动配置,写一个方法,返回值就是我们的HelloHz类

java 复制代码
@Configuration
@EnableConfigurationProperties(helloWorldProperties.class)
public class helloWorldConfiguration {

    @Bean
    public HelloHz helloHz(helloWorldProperties properties) {
        HelloHz helloHz = new HelloHz();
        helloHz.setHelloWorldProperties(properties);
        return helloHz;
    }
}

这里第三方Bean的时候,需要某个对象,我们直接通过参数的形式注入就完事了,spring到时候会自动跟据这个类型完成自动装配的

最后一步,我们还需要把这个自定义配置类的全类名 放到规定的文件下就是META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

欧克完事,我们直接分别打包到本地仓库

三. 测试启动

欧克,我们在新键一个项目来引入我们starter依赖看看,我们只需要引入starter依赖就可以了,因为我们的starter依赖已经引入了一个我们的那个自定义的配置模块依赖了。

可以看见已经引入进来了

Test:

java 复制代码
@SpringBootTest
public class SpringCsl {
    
    @Autowired
    private HelloHz helloHz;
    @Test
    public void csl() {
        System.out.println("helloHz = " + helloHz.getThePropertiesName());
        System.out.println("helloHz = " + helloHz.getThePropertiesAge());
    }
}

启动;

欧克,没问题,因为我们这里没有配置,我们重新在新项目的yml文件中来配置一下:

java 复制代码
hz:
  name: isTheHz
  age: 18

再次启动:

++坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤++

相关推荐
欢乐少年19043 小时前
SpringBoot集成Sentry日志收集-3 (Spring Boot集成)
spring boot·后端·sentry
夏天的味道٥4 小时前
使用 Java 执行 SQL 语句和存储过程
java·开发语言·sql
冰糖码奇朵5 小时前
大数据表高效导入导出解决方案,mysql数据库LOAD DATA命令和INTO OUTFILE命令详解
java·数据库·sql·mysql
好教员好5 小时前
【Spring】整合【SpringMVC】
java·spring
浪九天6 小时前
Java直通车系列13【Spring MVC】(Spring MVC常用注解)
java·后端·spring
小斌的Debug日记7 小时前
框架基本知识总结 Day16
redis·spring
堕落年代7 小时前
Maven匹配机制和仓库库设置
java·maven
m0_748246877 小时前
maven导入spring框架
数据库·spring·maven
功德+n7 小时前
Maven 使用指南:基础 + 进阶 + 高级用法
java·开发语言·maven
随风九天7 小时前
Spring Boot + MyBatis + MySQL:快速搭建CRUD应用
spring boot·mysql·mybatis