如何手写SpringBoot中的Starter

简单手写一个Spring boot starter SpringBoot自定义Starter开发指南 本文介绍了开发SpringBoot自定义Starter的完整流程。Starter能够简化依赖管理,实现即插即用的功能模块。文章以字符串加前缀功能为例,详细说明了实现步骤:1)创建项目并引入核心依赖spring-boot-autoconfigure;2)编写自动配置类(PrefixAutoConfiguration)和属性类(PrefixProperties);3)实现业务逻辑(PrefixService);4)配置spring.factories或AutoC 阅读详情

如何手写SpringBoot中的Starter

一、命名规则

自定义 Starter 的命名规则是自由的,但为了保持一致性和易用性,可以遵循以下命名规范:

  • 自定义: Starter 的名称以 “×××-spring-boot-starter” 结尾,前跟具体的功能或模块名称,例如cry-spring-boot-starter
  • 官方: Starter 的名称以 “spring-boot-starter-×××” 开头,后跟具体的功能或模块名称,例如spring-boot-starter-web

二、具体实现

1. model包
  • Animal接口

    public interface Animal {
    
        String cry(String str);
    }
    
  • Cat实现类

    @Slf4j
    public class Cat implements Animal{
    
        @Override
        public String cry(String str) {
            log.info("This is a Cat");
            return "猫:喵喵喵" + str;
        }
    }
    
  • Dog实现类

    @Slf4j
    public class Dog implements Animal{
    
        @Override
        public String cry(String str) {
            log.info("This is a Dog");
            return "狗:汪汪汪" + str;
        }
    }
    
2. config包
  • AnimalSetting类:用于获取配置文件中的形如"animal.type=dog"的数据,并自动填充到Bean中

    @ConfigurationProperties(prefix = "animal")
    @Setter
    @Getter
    public class AnimalSetting {
    
        private String type;
    }
    
  • AnimalConfiguration类:关键配置类,根据配置文件中的"animal.type"的不同值,自动创建对应的Cat或Dog类型的Bean对象并交由Spring进行管理

    @Configuration
    @EnableConfigurationProperties(AnimalSetting.class)
    @Slf4j
    public class AnimalConfiguration {
    
        @Bean
        @ConditionalOnProperty(prefix = "animal", name = "type", havingValue = "cat")
        public Cat cat() {
            log.info("Cat Init");
            return new Cat();
        }
    
        @Bean
        @ConditionalOnProperty(prefix = "animal", name = "type", havingValue = "dog")
        public Dog dog() {
            log.info("Dog Init");
            return new Dog();
        }
    }
    

    @EnableConfigurationProperties(AnimalSetting.class): 使AnimalSetting类生效。如果不使用这个注解,也可以在AnimalSetting类上面加@Component注解,效果一样

    @ConditionalOnProperty(prefix = “animal”, name = “type”, havingValue = “dog”): 条件加载注解,当"animal.type=dog"时,创建Dog类型的Bean对象并交由Spring进行管理

3. yml文件
animal:
  type: dog
4. Spring.factories文件

在resources目录下,创建名为META-INF的文件夹,在此文件夹下创建Spring.factories文件,文件内容为org.springframework.boot.autoconfigure.EnableAutoConfiguration=×××,其中×××为配置类的全限定类名

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.aben.cry.config.AnimalConfiguration
5. 安装Starter到本地仓库

在这里插入图片描述

6. 引用自定义Starter
<dependency>
    <groupId>com.aben.cry</groupId>
    <artifactId>cry-spring-boot-starter</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>
7. 使用Starter

在引入Starter的项目的application.yml文件中指定"animal.type=cat"或"animal.type=dog",即可注入对应的Animal实现类到Spring容器中,进而完成使用

springboot手写一个自己的starter 在本篇文章里小编给大家整理了关于springboot手写一个自己的starter源码的全部知识点内容,需要的朋友们学习下。 立即下载

相关推荐

ubuntu20.04配置UR机械臂的仿真环境

gazebo和rviz中的机械臂的位姿是一样的,要实现同步控制,可以拖动rviz中的球移动到指定位置,点击plan观察路径规划,点击execute执行该路径规划,可以在gazebo和rviz中同步看到刚刚的路径规划运动,实现了简单的机械臂仿真环境搭建。这是因为catkin找的python版本为anaconda下面的版本,所以需要改为指定采用下面的命令,参考之前的。之后要source一下,才能读取到工作空间里的文件,以后每次打开终端进入工作空间都要执行该命令。时,一直不成功,解决办法可以看我之前写的。

weixin_48319333的博客 3494

手写一个简单的starter

手写一个简单的starter

weixin_42184538的博客 1963

【β-Boltzmann探索策略】

𝜀是一个介于0和1之间的参数,用于控制探索和利用的比例。当𝜀较大时,智能体更倾向于探索;当𝜀较小时,智能体更倾向于利用已知信息。

m0_59385870的博客 1087

【Spring】手写一个简易starter

自定义一个starter,里面包含一个@TimeLog注解和一个TimeLogAspect切面类,用于统计接口耗时。要求在其它项目引入starter依赖后,启动springboot项目时能进行自动装配。 (1)引入pom依赖: (2)定义注解@TimeLog: @Target:注解作用“对象”,这里声明注解作用在方法上。 @Retention:表示注解在运行时会被保留,可以通过反射机制读取。 (3)定义切面类TimeLogAs

Annancqxxx的博客 604

从原理到调试:一次搞懂Camera Sensor的曝光、增益与帧率三角关系

本文深入解析Camera Sensor中曝光、增益与帧率之间的动态平衡关系,揭示低光环境下帧率下降的根本原因。通过实际调试案例和底层公式分析,帮助开发者理解如何优化相机参数设置,实现画质与流畅度的最佳平衡。

weixin_31310913的博客 431

电力远动入门:手把手解析IEC 60870-5-101规约的帧结构与报文交互(基于DL/T634.5101-2002)

本文深入解析IEC 60870-5-101规约的帧结构与报文交互,适用于电力远动通信系统。通过详细讲解规约的基础架构、控制域位定义及典型报文交互流程,帮助工程师快速掌握101规约的核心技术,提升电力自动化系统的调试与维护能力。

weixin_27076351的博客 246

手把手教你手写一个最简单的 Spring Boot Starter

引领完成Docker的安装、部署、管理和扩展,让其经历从测试到生产的整个开发生命周期,深入了解Docker适用于什么场景。并且这本Docker的学习权威指南介绍了其组件的基础知识,然后用Docker构建容器和服务来完成各种任务:利用Docker为新项目建立测试环境,演示如何使用持续集成的工作流集成Docker,如何构建应用程序服务和平台,如何使用Docker的API,如何扩展Docker。

2401_84048832的博客 887

比亚迪唐/秦开发者必看:253个车辆接口实战指南(附常用功能调用示例)

本文为比亚迪唐/秦开发者提供了一份详尽的车辆接口实战指南。文章聚焦于比亚迪开放的253个车辆接口,从开发环境搭建、核心状态监控到高频控制功能(如空调与充电管理),结合真实代码示例,帮助开发者快速上手并规避常见问题,高效开发车载应用。

weixin_28327051的博客 613

如何手写一个springboot starter?

本文主要分享了如何手写一个spring starter,把你的代码作为jar包进行开源。

JQ棣的博客 780

GPU微架构演进分析--从SIMT到Scalar-Vector-Tensor计算的混合配比与调度

GPU架构经历了从专用计算模块到统一可编程处理器的演进。传统GPU面临专用电路配比难题,Nvidia Tesla架构通过引入可编程多线程处理器实现图形与计算的统一。Fermi架构进一步向计算倾斜,随后的架构陆续加入Tensor Core等专用单元。AI时代促成了从图形处理主导向AI计算的转变,形成了Scalar+Vector+Tensor的混合计算范式。SIMT调度重要性降低,CUDA面临新挑战,RISC-V等架构可能带来新机遇。

ChipCamp的博客---https://chipcamp.blog.youkuaiyun.com/ 917

Unity 工具 之 SoftMask软遮罩 实现 UI 边缘渐变过渡的简单使用介绍

目录Unity 工具 之 SoftMask软遮罩 实现 UI 边缘渐变过渡的简单使用介绍一、简单介绍二、Mask 实现的遮罩效果三、Soft Mask 实现遮罩效果四、 Soft Mask 的一些设置五、插件下载Unity 工具类,自己整理的一些游戏开发可能用到的模块,单独独立使用,方便游戏开发。

仙魁XAN 8575

手把手教你手写一个最简单的 Spring Boot Starter,透彻分析源码

/// Starter使用者没在配置文件中配置prefixName属性的值时的默认值// Starter使用者没在配置文件中配置suffixName属性的值时的默认值自动装配类,使用 @Configuration 和 @Bean 来进行自动装配,注入 Spring 容器中。/**@Description 自动装配类*/@Configuration // 标识此类是配置类。

weixin_57485542的博客 1338

Linux Namespace隔离实战:dd/mkfs/mount/unshare构建终极沙箱

内存占用 | 512MB+ | **<10MB** | 50倍节省 || 启动时间 | 15-45秒 | **0.1-0.5秒** | 100倍加速 || 磁盘空间 | GB级 | **MB级** | 显著减少 || 系统调用性能 | 有损耗 | **原生速度** | 零损耗 |

Loving_enjoy的博客 398

SpringBoot手写starter 超详细

SpringBoot手写starter 相信大家在公司做项目时经常会使用到公司自己封装的依赖,里面就包括一些starter。可以用于制成通用方法以及框架等方便维护以及后续开发。所以研究了一下如何自己去写。先小试牛刀(在一个maven项目下快速两个创建springboot项目,一个用来写starter,一个用来测试。至于为什么这样建是因为,写完的starter需要打包然后配置下maven私库才能跨项目使用,所以现在同一个工程里做) 首先 创建完的项目就是这样子。stater的命名是有规范的,像官方的就是把自

qq_44772660的博客 7111

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SpringBoot简介及手写个starter

SpringBoot简介及手写starter

weixin_45472766的博客 1052

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

如何手写一个springBoot的starter

使用SpringBoot,可以快速帮我们搭建一个spring 应用,如果当前项目需要引入第三方的功能实现,我们只需要在当前项目的pom.xml文件中引入第三方的spring-boot-starter包。目前,springboot的社区,提供了很多第三方的spring-boot-starter,但有时候,我们还是需要根据自己项目的情况,编写满足项目需求的spring-boot-starter。在GitHub新建一个仓库,并把weather-service、weather-starter都上传到这个仓库中。

sgjingwen1987的博客 1774

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

手写SpringBoot-starter组件

一:手写starter组件步骤: SpringBoot有个很好的特性,即开箱即用,只要引入对应的starter组件,使用@Autowired注解即可实例化Bean,那原理是怎么的呢?先通过手写一个简单的数据库连接的组件了解步骤,再通过代码看原理。 1 . 创建XXXProperties 在此类上添加@ConfigurationProperties注解 说明:@ConfigurationProperties是springboot提供读取配置文件的一个注解。其对应的bean的后置处理器为Configuratio

m0_37044584的博客 617

SpringBoot之手写starter

SpringBoot手写starter

yuyanhaonan的博客 711

SpringBoot中的Starter,我们来手写一个

SpringBoot中的Starter,我们来手写一个 最近一个朋友去面试被问到了springboot中starter,觉得可以来记录与分享一下 我们使用 Spring Boot,基本上都是沉醉在它 Stater 的方便之中。Starter 为我们带来了众多的自动化配置,有了这些自动化配置,我们可以不费吹灰之力就能搭建一个生产级开发环境,其实 Starter 也都是 Spring + SpringMVC 中的基础知识点实现的 1.核心 其实 Starter 的核心就是条件注解 @Conditional ,当

qq_34136709的博客 316

如何手写一个SpringBoot Starter

SpringApplication.run(DemoApplication.class, args);

cable5881的博客 883

手写一个SpringBoot Starter

手写一个SpringBoot Starter 定义 所谓的 Starter ,就是Springboot中的某一个模块,它把这一一模块的所需要的JAR包打包好给我们并且能报配置文件文件搞好,不需要我们手机配置了,其实就是一个普通的 Maven 项目 。 开整 首先建立一个Maven项目, 创建完成后,添加 Starter 的自动化配置类即可 <dependency> <groupId>org.springframework.boot</groupId>

weixin_44559993的博客 219

手写一个stater_手写一个springboot starter

springboot的starter的作用就是自动装配。将配置类自动装配好放入ioc容器里。作为一个组件,提供给springboot的程序使用。今天手写一个starter。写一个dog类,有个bark方法,能叫唤出自己的名字。建一个普通的maven工程,引入springboot依赖pom.xmlorg.springframework.bootspring-boot2.3.1.RELEASE类定义如...

weixin_42486337的博客 180

【深入浅出SpringBoot的核心原理】手写Starter

我们通过手写一个starter,实现一个这样的功能:如果存在FastJson包则将对象以json形式输出,否则以对象的toString()输出。另外引入这个starter后我们不希望有任何的配置(自动配置),开箱即用。此文并不探究starter的原理,只希望读者可以初步了解一个starter的开发流程。 步骤1:新建一个空maven工程,并在pom.xml中导入如下依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --&

qq_35529931的博客 1018

深度解析 Spring Boot 以及手写一个 starter

什么是 Spring Boot Spring Boot 基本上是 Spring 框架的扩展,它消除了设置 Spring 应用程序所需的复杂例行配置。我们在使用 Spring 框架的时候,我们接触得比较多的应该是 Spring MVC、 IOC 、 DI 、AOP 等等,而这些框架在使用的过程中会需要配置大量的 XML,或者需要做很多繁琐的配置。Spring Boot 可以帮助我们快速搭建一个基于 Spirng 框架以及 Spring 生态体系的应用解决方案。 我们对着官网来翻译一下: 创建独立的 Spr

a779868946的博客 705

springboot入参检查aop_深度解析 Spring Boot 以及手写一个 starter

小Hub领读:我觉得这是SpringBoot的比较核心的功能了,就是这个starter,自动装配,让我们可以快速集成第三方框架,真是个好设计!太赞了,SpringBoot+Vue前后端分离完整入门教程!​mp.weixin.qq.com作者:jack_xu来源: https://juejin.im/post/5ec7d2f5e51d45785c693a9e什么是 Spring BootSpring...

weixin_39568172的博客 137

手写一个springboot的starter包

Spring Boot Starter 是一组方便的依赖项,它们帮助开发者快速集成 Spring Boot 应用所需的常用功能。通过使用 Starter,开发者可以减少配置和依赖管理的复杂性。手写一个 Spring Boot Starter 包可以帮助你快速复用某些功能或集成特定的库。下面是创建一个简单的 Spring Boot Starter 的步骤,包括项目结构、代码示例和配置说明。

yymagicer的博客 396
上一篇: Spring中Bean的生命周期
下一篇: 多线程寻找数字n及之后的m个质数
Isabener
博客等级 码龄6年 31粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值