Spring Boot自定义starters

SpringBoot资料合集-07【Spring Boot自定义starters】 一、简介 SpringBoot 最强大的功能就是把我们常用的场景抽取成了一个个starter(场景 启动器),我们通过引入springboot 为我提供的这些场景启动器,我们再进行 少量的配置就能使用相应的功能。即使是这样,springboot也不能囊括我们所 有的使用场景,往往我们需要自定义starter,来简化我们对springboot的使 用。 二、如何自定义starter 1.实例 如何编写自动配置 ? 我们参照@WebMvcAutoConfiguration为例,我们看看们需要准备哪些东 西,下面 阅读详情

starter:

  • 这个场景需要使用到的依赖是什么?
  • 如何编写自动配置
  • /**
     * 以WebMvcAutoConfiguration为例
     */
    
    //指定这个类是一个配置类
    @Configuration(proxyBeanMethods = false)
    //@ConditionalOnXXX: 在指定条件成立的情况下自动配置类生效
    @ConditionalOnWebApplication(type = Type.SERVLET)
    @ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class })
    @ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
    //指定自动配置类的顺序
    @AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
    @AutoConfigureAfter({ DispatcherServletAutoConfiguration.class,TaskExecutionAutoConfiguration.class,ValidationAutoConfiguration.class })
    //给容器中添加组件
    @Bean
    
    //结合相关xxxProperties类来绑定相关的配置
    @ConfigurationPropertie
    //让xxxProperties生效加入到容器中
    @EnableConfigurationProperties
    
    //自动配置类要能加载
    //将需要启动就加载的自动配置类,配置在META-INF/spring.factories
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
    org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
    org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\
  • 模式 
    • 启动器只用来做依赖导入

    • 专门来写一个自动配置模块

    • 启动器依赖自动配置,别人只需要引入启动器(starter)

    • mybatis-spring-boot-starter,自定义启动器名-spring-boot-starter

步骤:

  • 当我们的类需要使用自定义的模块时,就需要启动器模块进行依赖
  • <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.atguigu.starter</groupId>
        <artifactId>atguigu-spring-boot-starter</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <!--启动器-->
        <dependencies>
    
            <!--引入自动配置模块-->
            <dependency>
                <groupId>com.atguigu.starter</groupId>
                <artifactId>atguigu-spring-boot-starter-autoconfigurer</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
        </dependencies>
    
    </project>
  • 自动配置模块
  • <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
       <modelVersion>4.0.0</modelVersion>
    
       <groupId>com.atguigu.starter</groupId>
       <artifactId>atguigu-spring-boot-starter-autoconfigurer</artifactId>
       <version>0.0.1-SNAPSHOT</version>
       <packaging>jar</packaging>
    
       <name>atguigu-spring-boot-starter-autoconfigurer</name>
       <description>Demo project for Spring Boot</description>
    
       <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>1.5.10.RELEASE</version>
          <relativePath/> <!-- lookup parent from repository -->
       </parent>
    
       <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
          <java.version>1.8</java.version>
       </properties>
    
       <dependencies>
          <!--引入spring-boot-starter;所有starter的基本配置-->
          <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter</artifactId>
          </dependency>
       </dependencies>
    
    </project>
    
  • package com.atguigu.starter;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    
    @ConfigurationProperties(prefix = "atguigu.hello")
    public class HelloProperties {
    
        private String prefix;
        private String suffix;
    
        public String getPrefix() {
            return prefix;
        }
    
        public void setPrefix(String prefix) {
            this.prefix = prefix;
        }
    
        public String getSuffix() {
            return suffix;
        }
    
        public void setSuffix(String suffix) {
            this.suffix = suffix;
        }
    }
  • package com.atguigu.starter;
    
    public class HelloService {
    
        HelloProperties helloProperties;
    
        public HelloProperties getHelloProperties() {
            return helloProperties;
        }
    
        public void setHelloProperties(HelloProperties helloProperties) {
            this.helloProperties = helloProperties;
        }
    
        public String sayHellAtguigu(String name){
            return helloProperties.getPrefix()+"-" +name + helloProperties.getSuffix();
        }
    }
    
  • package com.atguigu.starter;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
    import org.springframework.boot.context.properties.EnableConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @ConditionalOnWebApplication //web应用才生效
    @EnableConfigurationProperties(HelloProperties.class)
    public class HelloServiceAutoConfiguration {
    
        @Autowired
        HelloProperties helloProperties;
        @Bean
        public HelloService helloService(){
            HelloService service = new HelloService();
            service.setHelloProperties(helloProperties);
            return service;
        }
    }
  • spring.factories:用来引用自动配置类
  • # Auto Configure
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
    com.atguigu.starter.HelloServiceAutoConfig
  • 根据顺序将自动配置类生成jar包
  • 重新生成新的项目
  • 在pom文件中添加依赖
  • <!--引入自定义的Starter-->
    <dependency>
        <groupId>com.atguigu.starter</groupId>
        <artifactId>atguigu-spring-boot-starter-autoconfigurer</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
  • 写一个测试类Controller
  • @RestController
    public class HelloController {
    
        @Autowired
        HelloService helloService;
    
        @GetMapping("/hello")
        public String hello(){
            return helloService.sayHelloAtguigu("haha");
        }
    }
  • 在application.properties中添加一些参数
  • atguigu.hello.prefix=ATGUIGU
    atguigu.hello.suffix=HELLO WORLD
  • 运行项目
  • 说明我们写的自动配置类可以用!!!
Spring Boot 自定义starter启动器(demo).zip Spring Boot 自定义starter启动器 Demo 部分,用于记录使用。该demo 配套教程 https://blog.youkuaiyun.com/lzb348110175/article/details/105330274。 立即下载

相关推荐

SpringBoot启动器Starters使用及原理解析

主要介绍了SpringBoot启动器Starters使用及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Spring Boot之自定义Starter

在Spring Boot中,自定义Starter是一种方便的方式来封装和共享一组相关的依赖项和配置。自定义Starter可以简化应用程序的配置,并提供一致的依赖项管理。

积跬步,至千里。 4787

autoDL算力云装Xinference[坑与步骤]

在页面直接点击下载会出现下着下载进度条消失,试了几次才出现这个报错,现在我们就继续安装缺少的包吧。这一步成功绕开了系统盘空间限制。先租用一个合适的服务器,建议不要选最新版本,跟我选的一样即可,不然后面会出现。最近在 AutoDL 上尝试部署。🚫 不要直接使用以下命令。点击下面链接即可打开。

ngadminq的博客 2381

Springboot基础之——自定义starter

通过这篇文章,你将了解到springboot自动装配原理,以及如何自定义starter。

qq_63003916的博客 3529

父子Agent架构:解决AI系统上下文污染的技术方案

在AI系统设计中,上下文管理是核心挑战之一。传统单Agent架构在处理复杂任务时,常面临上下文无限膨胀导致的信息淹没和性能下降问题。父子Agent架构通过职责分离和上下文隔离机制,采用分而治之的思想,将大任务拆解为多个子任务由专门子Agent处理。该架构中父Agent负责任务规划和结果汇总,子Agent执行具体任务后立即销毁中间状态,通过精炼摘要进行通信。这种设计不仅能有效控制上下文长度,还能提升系统稳定性和执行效率,特别适用于编程辅助、自动化测试等需要多步骤处理的场景。父子Agent架构体现了计算机科学中

weixin_42531710的博客 352

VS2019+EasyX图形库实战:手把手教你用C语言打造消消乐小游戏(附完整源码)

本文详细介绍了如何使用VS2019和EasyX图形库从零开始构建一个C语言消消乐小游戏。通过环境配置、数据结构设计、界面绘制、交互实现到游戏逻辑完善的完整流程,帮助开发者掌握图形编程和游戏开发的核心技巧,并附有完整源码供参考。

bush的博客 186

SpringBoot中自定义Starter

SpringBoot中自定义Starter

Zhaof_Notes 2761

射频接收机本振相噪指标计算:从倒易混频到GSM实战

在射频接收机设计中,相位噪声是衡量本振信号频谱纯度、影响系统灵敏度的关键指标。其核心影响机制源于倒易混频原理:当不纯净的本振信号与强带外阻塞信号混频时,本振的噪声边带会被转换到中频通带内,从而抬升接收机噪声基底。这一过程直接决定了接收机在阻塞测试等场景下的性能极限。从技术价值看,精确计算本振相噪要求,是进行系统噪声预算、实现成本与性能权衡的核心依据。尤其在手机、基站等对灵敏度要求极高的应用中,它指导着锁相环和压控振荡器的选型与设计。本文以经典的GSM DCS1800标准为例,通过详细的公式推导与变量分析,演

weixin_30368405的博客 324

一文详解SpringBoot的自定义starter

自定义starter的优势在于它可以简化配置过程,提高开发效率。开发者可以根据自己的需求创建特定的starter,实现功能的快速集成。同时,自定义starter也有助于代码的模块化和重用。

as230627的博客 723

Codex CLI 的多模型切换实战:如何在中转 API 环境下灵活选择最佳模型

本文详细介绍了在Codex CLI中实现多模型切换的实战技巧,重点解析了如何在中转API环境下灵活选择最佳AI模型。通过配置Node.js环境和智能路由策略,开发者可以根据任务类型、编程语言和成本考量,在GPT-5、Claude和DeepSeek等模型间高效切换,提升代码生成、审查和优化的效率。

weixin_29291185的博客 835

量化策略分享之ST股弱转强,回测年化123%

本策略的核心是精选ST股票,国九条过滤,防止直接暴雷退市,只做ST股票的弱转强,弱转强的认定标准是前日涨停但昨日不涨停,昨日收盘价大于前一日最低价,昨日收盘价大于10日线,昨日成交量大于前一日的成交量但小于前一日成交量的10倍,股价大于1;这类股票强势,有资金介入,能获得超额收益。

qq_29301281的博客 1267

八、Spring Boot自定义starters

一、自定义starters • 自动装配Bean; – 自动装配使用配置类(@Configuration)结合Spring4 提供的条件判断注解 @Conditional及Spring Boot的派生注解如 @ConditionOnClass完成; • 配置自动装配Bean; – 将标注@Configuration的自动配置类,放在classp...

weixin_42290901的博客 256

111. 如何创建 SAP ABAP 锁对象(Lock Object)和加锁以及解锁函数

至此,我们完成了 ABAP 系统锁机制和加锁解锁函数的介绍。有了这些基础知识,大家就能在实际工作中,使用 Lock Object 和加锁解锁函数,编写出支持并发访问控制的 ABAP 应用程序了。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1531

Spring Boot系列第八篇:Spring Boot自定义Starters

文章目录一、Starters原理1.Starters场景启动器二、 自定义Starters 一、Starters原理 1.Starters场景启动器 1、场景需要用到的依赖是什么? 比如依赖的jar 2、如何编写自动配置? 以WebMvcAutoConfiguration自动配置为例: @Configuration @ConditionalOnWebApplication @ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebM

qq_29445811的博客 336

visio安装包

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

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

4.自定义的Spring Boot Starters

在先前的章节中我们做了很多的配置,并且在Spring Boot应用中还有许多的自动配置。现在,我们需要看一下这些自动装配的源码和写一些我们自定义的starters. 自定义的starters对于公司的项目来说是非常有用的。这样我们就可以自定义配置系统,包和配置项去解决数据库,连接池,http客户端等我们自己需要的。这章节,我们将会深入研究starters,这样的话,我们就可以知道写一个自定义的starter需要哪些规则以达到我们创建自己starter的目的。 4.1了解Spring Boot的自动装..

owen_william的博客 168

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

自定义Spring Boot Starters

传统的做法 在没有starter之前,假如我想要在Spring中使用jpa,那我可能需要做以下操作: 在Maven中引入使用的数据库的依赖(即JDBC的jar) 引入jpa的依赖 在xxx.xml中配置一些属性信息 反复的调试直到可以正常运行 需要注意的是,这里操作在我们每次新建一个需要用到jpa的项目的时候都需要重复的做一次。也许你在第一次自己建立项目的时候是在Google上自己搜索了一番,...

JavaBoy的博客 226

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

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

Spring Boot简略自定义starters

更多信息: 本篇算是学习笔记 视频 尚硅谷 配置文件的信息 Spring Boot文档 目录更多信息:Starter Starter starter: 这个场景需要使用到的依赖(jar包)是什么? ​如何编写自动配置 @Configuration //指定这个类是一个配置类 @ConditionalOnXXX //在指定条件成立的情况下自动配置类生效 @AutoConfigureAfter //指定自动配置类的顺序 @Bean //给容器中添加组件 我们在自动给容器中添加组件的时候

NorburyL 208

Spring Boot笔记-Spring Boot自定义starters(八)

创建自定义starter的时候需要考虑的问题: 1.这个starter需要哪些依赖 2.如何编写自动配置 @Configuration//指定这个类是一个配置类 @ConditionalOnXXX//在指定条件成立的情况下自动配置类生效 @AutoConfigureAfter//指定自动配置类的顺序 @Bean//给容器中添加组件 @ConfigurationPropertie ...

王劭阳的博客 412

【SpringBoot】仿 spring-boot-project 自定义 starters

自定义的框架基础,这里封装了统一响应结果、基础异常、基础错误码枚举、校验工具类等共用类,同时也引入了一些共用依赖,原则上每个新建的工程都需要引用此 module。- 空文件包,此包是对 pointer-boot-build 进行了依赖管理。在构建大型微服务框架时常常会引入此包,统一对依赖包进行版本管理。

迪曼奥特迦-博客 723

Spring Boot 自定义starters

Spring Boot 自定义starters 转载于:https://www.cnblogs.com/Aha-Best/p/11205444.html

weixin_30828379的博客 107
上一篇: Spring Boot2.X 启动配置原理
下一篇: Git 简介与安装
Future_LL
博客等级 码龄9年 215粉丝 255原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值