starter 实现
本文章诞生于实战开发后总结记录
项目写的稀里糊涂
原理也是一知半解
互相探讨共同进步
官方starter 与 自封装starter 有什么差别
官方的starter只需要关注springboot版本而不需要关注starter版本 , 这就是正规军和杂牌军的差别呀
-
官方starter版本被spring-boot-starter-parent 统一管理
-
自己写的也可以被管理吗?
这个我也不太知道,可能实现继承某些父项目可以实现统一管理
自定义starter
最近项目需要,我需要封装一些依赖提供给其他项目引入使用
-
网上查了很多关于 "如何自己写一个spring-boot-starter" 的文章, 发现大家都是表亲呀, 你的文章和我长得很像,我的又和你的长得差不多,甚至代码都高度相似 所以才想自己写一篇文章, 给大家提供另一种思路
-
文章需要有一定基础知识并且独立思考能力强的人,如您还是新手,等两年再看
开始
-
新建项目 springboot 或 maven 都可以
-
maven项目需要实现依赖管理
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${org.springframework.boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
-
无论那种项目都要保证starter的基本装配能力 -> 被动扫描 ->主动装配 -> 注册bean -> 生效
-
引入依赖不易过多
-
-
配置pom的重要性 (下方示例为 springboot 项目)
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- 确保项目中有最基本的被动捕获能力 不加parent也可以 下方依赖中已经添加 spring-boot-starter --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> <!-- 本体坐标 --> <groupId>com.qm</groupId> <artifactId>logger-spring-boot-starter</artifactId> <version>0.2.9-TEST-SNAPSHOT</version> <packaging>jar</packaging> <!-- 本体名称 及其说明 项目地址 符合maven发布规定 --&