【定制化体验:使用Spring Boot自动配置,打造个性化Starter】

项目结构

在这里插入图片描述

Pom

<?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.custom</groupId><artifactId>spring-boot-starter-custom</artifactId><version>0.1-SNAPSHOT</version><packaging>jar</packaging><description>封装一个简单User组件</description><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.5.8</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId><version>2.5.8</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><version>2.5.8</version></dependency></dependencies>
</project>

spring.factories 注意书写格式

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.custom.config.UserAutoConfiguration

UserService (最后注入成bean)

public class UserService {private String name;private String age;private Long id;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public void pint() {System.out.println(String.format("获取的数据用户名:%s----密码:%s----id:%s", name, age, id));}
}

UserProperties (用户配置)

@ConfigurationProperties(prefix = "song.user")
public class UserProperties {private String start;private String name;private String age;private Long id;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getStart() {return start;}public void setStart(String start) {this.start = start;}
}

最关键的配置 自动配置类 一定要看注释


/*** 功能描述: 自动配置类** @author Songxianyang* @date 2024-04-26 13:40*/
@Configuration
// yaml档中song.user.start 有没有  如果没有则无法自动配置改类
@ConditionalOnProperty(prefix = "song.user", name = {"start"})
// 把yml配置的属性注入进来 然后使用它。启动自动配置属性
@EnableConfigurationProperties(UserProperties.class)
public class UserAutoConfiguration {@Beanpublic UserService userService(UserProperties userProperties) {UserService userService = new UserService();userService.setId(userProperties.getId());userService.setName(userProperties.getName());userService.setAge(userProperties.getAge());return userService;}
}

如何使用自己封装的starter

随便找一个spring boot 项目 然后再pom中引入自己的starter

这里以我自己kkxx-poi 项目为例子
在这里插入图片描述

再写一个web控制层调用一下

在这里插入图片描述


关键配置yml (application-local.yml)

在这里插入图片描述

测试 读取到具体的配置拉

在这里插入图片描述

知识点汇总

  1. 自动配置原理
  2. Spring Boot环境选择
  3. yml配置的类
  4. 条件注解
  5. 开启关闭组件逻辑

代码分享

starter组件

调用组件的类

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32存储左右互搏 SDIO总线FATS文件读写SD/MicroSD/TF卡

STM32存储左右互搏 SDIO总线FATS文件读写SD/MicroSD/TF卡 SD/MicroSD/TF卡是基于FLASH的一种常见非易失存储单元&#xff0c;由接口协议电路和FLASH构成。市面上由不同尺寸和不同容量的卡&#xff0c;手机领域用的TF卡实际就是MicroSD卡&#xff0c;尺寸比SD卡小&#xff0c;而…

Nginx 从入门到实践(1)

Nginx 从入门到实践 Nginx Nginx 从入门到实践Nginx介绍Nginx常用功能1、Http代理&#xff0c;反向代理2、负载均衡3、动静分离4、Nginx配置文件结构 简述Nginx和Apache的差异编译安装nginx服务在线安装nginxnginx 状态统计nginx 访问控制(用户校验、客户端授权)用户校验基于客…

2021 年全国职业院校技能大赛高职组“信息安全管理与评估”赛项 A 卷 第一阶段任务书

2021 年全国职业院校技能大赛高职组“信息安全管理与评估”赛项 A 卷 信息安全管理与评估 网络系统管理 网络搭建与应用 云计算 软件测试 移动应用开发 任务书&#xff0c;赛题&#xff0c;解析等资料&#xff0c;知识点培训服务 添加博主wx&#xff1a;liuliu5488233 一、赛项…

释放人工智能潜力,Polkadot 再掀区块链技术革命

来源&#xff1a;https://polkadot.network/blog/unleashing-the-potential-of-ai-with-polkadot/ 编译&#xff1a;OneBlock 区块链技术开辟了一个充满可能性的世界&#xff0c;这一点在新兴崛起的人工智能&#xff08;AI&#xff09;领域最为明显。 Polkadot 生态处于这场…

【蓝桥2025备赛】容斥原理

容斥原理 背景&#xff1a;两个集合相交 高中的韦恩图&#xff0c;我们知道两个集合相交时我们可以通过简单的计算来认识相关的性质 集合相交的区域是 A ∩ B A\cap B A∩B ,集合的并集是 A ∪ B A\cup B A∪B ,那怎么用集合表示 A ∪ B A\cup B A∪B 我们可以看作是A集合…

超潜力 JAM 链何以超越中继链,引领 Polkadot 2.0 新航向?

2024 年 4 月 18 日&#xff0c;Polkadot 创始人 Gavin Wood 在迪拜 Token 2049 活动上宣布了一项波卡生态的重大进展—— JAM 灰皮书发布&#xff01;JAM 协议的诞生与发展开辟了波卡生态的另一种发展路径&#xff0c;它将替代当前中继链的技术角色&#xff0c;以模块化、简约…

某会员商店App的api接口分析

1、目的 探索学习app接口的加解密机制&#xff0c;并通过api模拟调用的方式&#xff0c;发起业务请求。仅供学习。 2、工具准备 样本App版本&#xff1a;v5.0.80&#xff0c;v5.0.90 设备&#xff1a;Oppo R9s&#xff08;Android7.1.1&#xff09; MacOS Big Sur&#xff…

SpringCloud 之 服务提供者

前提 便于理解,我修改了本地域名》这里!!! 127.0.0.1 eureka7001.com 127.0.0.1 eureka7002.com 127.0.0.1 eureka7003.com学习Rest实例之提供者 提供者模块展示 1、导入依赖 <!-- 实体类 Web--><dependency><groupId>com.jyl</groupId><…

AvalonDock实现可停靠式布局

链接&#xff1a; 源码地址 优势&#xff1a; 1. 可创建类似VisualStudio风格的可吸附式UI界面&#xff1b; 2. 界面可切换不同的颜色风格。

《2023网信自主创新调研报告》正式发布,云起无垠连年参编

近日&#xff0c;备受瞩目的《2023网信自主创新调研报告》&#xff08;以下简称《报告》&#xff09;正式对外发布。在这一重要报告的编写过程中&#xff0c;云起无垠公司作为参编单位&#xff0c;发挥了重要作用。公司凭借在软件测试工具、漏洞管理和软件供应链安全等领域的深…

智谱AI大模型-系列_1

关键概念GLM GLM 全名 General Language Model &#xff0c;是一款基于自回归填空的预训练语言模型。ChatGLM 系列模型&#xff0c;支持相对复杂的自然语言指令&#xff0c;并且能够解决困难的推理类问题。该模型配备了易于使用的 API 接口&#xff0c;允许开发者轻松将其融入…

PHP项目搭建与启动

1、拉取项目 2、安装phpstudy 下载地址&#xff1a; Windows版phpstudy下载 - 小皮面板(phpstudy) (xp.cn) 软件安装&#xff1a; Apache2.4.39、Nginx1.15.11、MySQL8.0.12、 composer2.5.8 添加伪静态 将下面代码写入到伪静态配置文本域框内&#xff1a; location ~* (ru…