#自定义组件能够实现功能
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'}