自定义Springboot-start组件[跟着步骤可完成]

2022-06-18 13:47:31

#自定义组件能够实现功能

0.yml参数配置,类似mysql-driver的数据库连接配置1.功能方法,类似xxxTemplate使用其相关方法2.整体拦截,类似SpringSecurity对web框架的拦截3.其他。。。比如企业中复用的通用组件,各个部门中复用的组件

A.制作自定义start组件

#A.1创建一个空springboot项目

pom.xml

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.6</version><relativePath/><!-- lookup parent from repository --></parent><groupId>cn.lanca_ip</groupId><artifactId>ip-spring-boot-start</artifactId><version>0.0.1</version><description>自定义组件</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!--配置yml提示,有了spring-configuration-metadata.json文件,这个依赖可以不用了--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency></dependencies></project>

#A.2

A2.1 生成项目结构图,带注释说明

tree -L 8

└── src
    └── main
        ├── java
        │   └── cn
        │       └── lanca_ip
        │           ├── IpSpringBootStartApplication.java#主启动类,可以不存在的,影响不大
        │           ├── config#配置项
        │           │   ├── IpAutoConfiguration.java#自动配置类,注入相关功能类等操作
        │           │   └── IpProperties.java#参数配置文件,用做yml传参数控制自定义组件功能
        │           └──service
        │               └── IpServiceImpl.java#组件提供的方法/功能
        └── resources
            ├── META-INF#这个文件夹名称位置固定,springboot都这么写
            │   ├── spring-configuration-metadata.json#其他项目使用时,做yml配置的提示
            │   └── spring.factories#明确自动配置类的位置
            └── application.yml

A2.2 截图

在这里插入图片描述

A2.3具体类贴上

IpAutoConfiguration.java
@Configuration@EnableConfigurationProperties(IpProperties.class)//开启自动配置publicclassIpAutoConfiguration{@BeanpublicIpServiceImplipService(){returnnewIpServiceImpl();}}
IpProperties.java
@ConfigurationProperties(prefix="tools.ip")publicclassIpProperties{/**
     * 喊你读书你要去喂猪
     */privateLong id;/**
     * string name 名称yy
     */privateString name;publicLonggetId(){return id;}publicvoidsetId(Long id){this.id= id;}publicStringgetName(){return name;}publicvoidsetName(String name){this.name= name;}@OverridepublicStringtoString(){return"IpProperties{"+"id="+ id+", name='"+ name+'\''+'}';}}
IpServiceImpl.java
/**
 * 具体的实现/功能方法
 */@ServicepublicclassIpServiceImpl{@AutowiredprivateIpProperties ipProperties;/**
     * 具体的实现/功能方法
     */publicvoidprintIp(){System.out.println("+---------我是自定义Start模块中的方法----------------+");System.out.println(ipProperties);}}
mvn install

将自定义的组件以maven仓库的形式install在你本地仓库,如果你自定义的组件特别优秀,使用量特别大,你最好得弄在maven的顶级仓库中去,致于怎么弄,自己想办法
在这里插入图片描述

B.在其他项目/模块使用start组件

#B.1 添加pom依赖,然后刷新

<dependencies><!-- 使用自定义组件--><dependency><groupId>cn.lanca_ip</groupId><artifactId>ip-spring-boot-start</artifactId><version>0.0.1</version></dependency></dependencies>

在这里插入图片描述

#B.2 配置yml

tools:ip:id:12name: meihongliang

#B.3 使用

@SpringBootTestclassEsaypoiApplicationTests{/**
	 * 注入功能类
	 */@AutowiredprivateIpServiceImpl ipService;/**
	 * 使用该方法
	 */@TestvoidtestA(){System.out.println("其他模块调用他人Start组件");// 使用该方法
	    ipService.printIp();}}

#B.4 调用结果

其他模块调用他人Start组件+---------我是自定义Start模块中的方法----------------+IpProperties{id=12, name='meihongliang'}
  • 作者:CsbLanca
  • 原文链接:https://blog.csdn.net/CsbLanca/article/details/123893648
    更新时间:2022-06-18 13:47:31