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

news2024/9/28 18:24:19

目录

引言:

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

二. 创建一个自动配置类

 三. 测试启动


引言:

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

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

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

二. 创建一个自动配置类

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

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

就随便来模拟一下了

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

hz:
  name: isHeZ
  age: 18

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

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

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

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

此时爆红

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

@Configuration
@EnableConfigurationProperties(helloWorldProperties.class )
public class helloWorldConfiguration {
}

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

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


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类

@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:

@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文件中来配置一下:

hz:
  name: isTheHz
  age: 18

再次启动:

 

坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 坤 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2174388.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql8.0安装后没有my.ini

今天安装mysql后想改一下配置文件看了一下安装路径 C:\Program Files\MySQL\MySQL Server 8.0 发现根本没有这个文件查看隐藏文件也没用查了之后才知道换地方了和原来的5.7不一样 新地址是C:\ProgramData\MySQL\MySQL Server 8.0 文件也是隐藏的记得改一下配置

【Redis 源码】7RDB持久化

1 功能说明 RDB (Redis Database Backup) 是 Redis 的一种持久化方式,它通过将某一时刻的内存快照(snapshot)以二进制格式保存到磁盘上。这种持久化方式提供了高性能和紧凑的数据存储,但相对于 AOF (Append Only File) 来说&…

充电桩安装-理想充电桩如何安装全流程-从准备到材料准备全流程

充电桩安装 Willya 2023年3月6日 新能源车出行成本低,那肯定是要在便利的条件下,得有自己的充电桩才行,实在安装不了自己的充电桩,那也要保证居住周边有充足的充电站,这样才能保证用车的便捷。 理想汽车充电桩安装一般…

智能化转型新篇章:EasyCVR引领大型连锁超市视频监控进入AI时代

随着科技的飞速发展,视频监控系统在各行各业中的应用日益广泛,大型连锁超市作为人员密集、商品繁多的公共场所,其安全监控显得尤为重要。为了提升超市的安全管理水平、减少损失、保障顾客和员工的安全,引入高效、全面的视频监控系…

胤娲科技:AI界的超级充电宝——忆阻器如何让LLM告别电量焦虑

当AI遇上“记忆橡皮擦”,电量不再是问题! 嘿,朋友们,你们是否曾经因为手机电量不足而焦虑得像个无头苍蝇?想象一下,如果这种“电量焦虑”也蔓延到了AI界, 特别是那些聪明绝顶但“耗电如喝水”的…

逃离陷阱:如何巧妙避免机器学习中的过拟合与欠拟合

逃离陷阱:如何巧妙避免机器学习中的过拟合与欠拟合 前言过拟合:定义与识别定义表现原因示例:决策树模型的过拟合 欠拟合:定义与识别定义表现原因示例:线性回归模型的欠拟合 避免过拟合的策略减少模型复杂度使用正则化…

基于nodejs+vue的校园二手物品交易系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

SSM超市售卖管理系统-计算机毕业设计源码23976

目 录 摘要 Abstract 1 绪论 1.1研究的背景和意义 1.2研究内容 1.3论文结构与章节安排 2 开发技术介绍 2.1 SSM框架 2.2 MySQL数据库 3 超市售卖管理系统系统分析 3.1 可行性分析 3.2 系统流程分析 3.2.1 数据流程 3.3.2 业务流程 3.3 系统功能分析 3.3.1 功…

低代码可视化-UniApp二维码可视化-代码生成器

市面上提供了各种各样的二维码组件,做了一简单的uniapp二维码组件,二维码实现依赖davidshimjs/qrcodejs。 组件特点 跨浏览器支持:利用Canvas元素实现二维码的跨浏览器兼容性,兼容微信小程序、h5、app。 无依赖性:QR…

留学生如何适应海外生活以及应对文化差异

对于即将出国学习和生活的留学生来说,文化差异和生活方式的变化常常是一个紧迫的问题。那么,如何应对这些文化差异,以及如何适应新的学习环境和社交生活呢?本文将分享一些具体可行的建议和方法,助您顺利跨越这道难关&a…

数据结构:队列及其应用

队列(Queue)是一种特殊的线性表,它的主要特点是先进先出(First In First Out,FIFO)。队列只允许在一端(队尾)进行插入操作,而在另一端(队头)进行删…

Hadoop三大组件之YARN(一)

YARN架构与任务提交流程详解 1. YARN的组成架构 YARN(Yet Another Resource Negotiator)是Hadoop生态系统中的一个重要组成部分,主要用于资源管理和调度。YARN的架构主要由以下几个关键组件构成: 1.1 ResourceManager&#xff…

vue3结合 vue-router和keepalive实现路由跳转保持滚动位置不改变(超级简易清晰)

1.首先我们在路由跳转页面设置keepalive(Seeall是我想实现结果的页面) 2. 想实现结果的页面中如果不是全屏实现滚动而是有单独的标签实现滚动效果

Spring Boot技术栈:打造高效在线商城

2 相关技术 2.1 Springboot框架介绍 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring…

AI大模型对我国劳动力市场潜在影响研究报告(2024)|附19页PDF文件下载

前言 北京大学国家发展研究院与智联招聘日前联合发布《AI大模型对我国劳动力市场潜在影响研究》。该研究显示,2024年上半年,招聘职位数同比增速前五的人工智能职业,包括大语言模型方面的自然语言处理(111%)、深度学习…

STM32 RTC实时时钟学习总结

STM32 RTC实时时钟学习总结 写于2024/9/25下午 文章目录 STM32 RTC实时时钟学习总结1. 简介2. 流程框图介绍3. 相关寄存器介绍4. 代码解析 1. 简介 STM32F103 的实时时钟(RTC)是一个独立的定时器。STM32 的 RTC 模块拥有一组连续计数的计数器&#xff…

【C语言】动态内存管理:malloc、calloc、realloc、free

本篇介绍一下C语言中的malloc/calloc/realloc。 使用这些函数需要包含头文件<stdlib.h>。malloc/calloc/realloc申请的空间都是 堆区的。 1.malloc和free 1.1 malloc C语言提供了一个动态内存开辟的函数malloc&#xff0c;函数原型如下。 void* malloc(size_t size);…

实例讲解电动汽车故障限功限速控制策略及Simulink建模方法

电动汽车出现转向系统、制动系统及其他对车辆行车产生一定风险的故障&#xff0c;整车控制器判定为二级故障&#xff0c;功率限制为正常状态的50%&#xff0c;车速限制至20km/h。当车辆进入二级故障后&#xff0c;VCU需要根据故障处理机制进行限功限速控制。有关故障分级处理策…

基于php的在线租房管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

DIDIDI~

1 最佳速通时间 小C准备参加某个游戏的速通比赛&#xff0c;为此他对该游戏速通了 n次&#xff0c;每次速通记录可以用一个数组 A{a1,a2……am}表示&#xff0c;其中a表示小C 从游戏开始到第i个游戏节点所花赛的时间&#xff0c;m 为游戏节点的个数。请根据小 C 的速通记录计算…