如何快速自定义一个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

再次启动:

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

相关推荐
架构源启11 小时前
文档接入与智能解析:基于 Spring AI 1.1.x 的多格式解析、版面理解与结构化抽取
java·人工智能·spring
大模型码小白15 小时前
JAVA 集合框架进阶:List 与 Set 的深度解析与实战
java·开发语言·人工智能·windows·语言模型·list·ai编程
名字还没想好☜15 小时前
Go 的 time.Ticker 陷阱:定时任务里被忽略的内存泄漏与正确关闭
java·数据库·golang·go·定时器
音符犹如代码16 小时前
后端视角看 EventBus:发布订阅总线的原理、场景与用法
java·spring boot·guava
前端炒粉16 小时前
手撕小汇总
java·前端·javascript
唐青枫16 小时前
Java Kafka 实战指南:从 Topic、分区到 Spring Boot 可靠消息处理
java
脱胎换骨-军哥17 小时前
C++零成本抽象理论深度拆解:现代C++如何在不牺牲性能的前提下提供高级语法封装
java·开发语言·c++
我是唐青枫17 小时前
Java Netty 实战指南:从 NIO 线程模型到 TCP 编解码和心跳机制
java·tcp/ip·nio
小白说大模型17 小时前
从向量嵌入到复杂 Agent:LLM、LangChain、LangGraph 完整科普
java·开发语言·人工智能·gpt·深度学习·langchain
风起洛阳@不良使19 小时前
springIOC创建对象的方式--spring容器中的注入
java·spring