内容简介:自制一个Spring Boot Starter并推送到远端公服进行管理传统的 Maven项目一般将需要被复用的组件做成 Module来进行管理,以便二次调用;而在 Spring Boot项目中我们则可以使用更加优雅的 Spring Boot Starter来完成这一切。
自制一个Spring Boot Starter并推送到远端公服进行管理
概 述
传统的 Maven项目一般将需要被复用的组件做成 Module来进行管理,以便二次调用;而在 Spring Boot项目中我们则可以使用更加优雅的 Spring Boot Starter来完成这一切。
基于Spring Boot开发应用的过程可谓是幸福感满满,其开箱即用的特性分析已经在 《SpringBoot 应用程序启动过程探秘》 一文中详细叙述过了。这个开箱即用的魔法特性很大程度上来源于各式各样 Spring Boot Starter的加持,而且随着版本的迭代 Starter家族成员日益庞大,而且各种优秀开源作者也提供了很多非常好用的Spring Boot Starter。
本文则尝试自制一个Spring Boot Starter并推送到远端仓库进行管理。
注:本文首发于 My Personal Blog:CodeSheep·程序羊 ,欢迎光临 小站
新建项目
本文准备封装一个简单的 MD5摘要 工具 的 Starter,命名为 md5test-spring-boot-starter
,其本质就是一个 Maven项目,只不过我们需要完善pom文件的相关依赖:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.1.1.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
编写业务逻辑
首先提供一个 MD5Util
工具类,负责实际的 MD5加密:
public class MD5Util { public static String getMD5( String source ) { return getMD5( source.getBytes() ); } public static String getMD5(byte[] source) { String s = null; char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; try { java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5"); byte tmp[]; synchronized ( MD5Util.class ) { md.update(source); tmp = md.digest(); } char str[] = new char[16 * 2]; int k = 0; for (int i = 0; i < 16; i++) { byte byte0 = tmp[i]; str[k++] = hexDigits[byte0 >>> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; } s = new String(str); } catch (Exception e) { e.printStackTrace(); } return s; } }
再来提供一个 MD5Service
类 进行一次封装
public class MD5Service { public String getMD5( String input ) { return MD5Util.getMD5( input.getBytes() ); } }
编写自动装配类
这一步十分重要,也是编写 Spring Boot Starter最重要的一步:
@Configuration public class MD5AutoConfiguration { @Bean MD5Service md5Service() { return new MD5Service(); } }
当然此处可以说是最简自动装配类了,该部分其实还包含各种丰富的可控注解,可以 参考这里 !
编写spring.factories
我们还需要在 resources/META-INF/
下创建一个名为 spring.factories
的文件,然后置入以下内容:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=cn.codesheep.auto.MD5AutoConfiguration
这一步也是相当重要哇,为什么这一步这么重要呢,因为我已经在文章 《SpringBoot 应用程序启动过程探秘》 中讲过了,Spring Boot自动注入的奥秘就来源于 Spring Boot应用在启动过程中会通过 SpringFactoriesLoader
加载所有 META-INF/spring.factories
文件,通过一系列的处理流程最终将 spring.factories 文件中的定义的各种 beans
装载入 ApplicationContext容器。
这一步搞定之后其实一个 Spring Boot Starter已经写好了,接下来可以通过 mvn:install
打包,并传到 私有/公有Maven仓库以供使用了。
推送到远端仓库
很多公司都搭有私有的 Maven仓库,但个人实验可以借助于 JitPack这个 “远端公服”来为我们托管自制的 Spring Boot Starter。
我们将编写好的 Spring Boot Starter代码置于 Github公有仓库上,然后通过 JitPack来拉取我们的代码并打包生成Jar包即可
使用Spring Boot Starter
新建一个测试工程来测试一下我们编写的 md5test-spring-boot-starter
。工程创建完毕后,在 pom.xml
中加入如下两个元素:
- 添加 JitPack repository
<repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories>
- 添加
md5test-spring-boot-starter
依赖:
<dependency> <groupId>com.github.hansonwang99</groupId> <artifactId>md5test-spring-boot-starter</artifactId> <version>0.0.1</version> </dependency>
再编写一个测试 Controller来测一下MD5摘要算法的功能:
@RestController public class TestController { @Autowired private MD5Service md5Service; @RequestMapping("/test") public String getMD5() { return "MD5加密结果为:" + md5Service.getMD5("mypassword"); } }
调用 /test
接口后的加密结果为:
MD5加密结果为:34819D7BEEABB9260A5C854BC85B3E44
以上所述就是小编给大家介绍的《如何自制一个Spring Boot Starter并推送到远端公服》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Git 推送到多个仓库
- 推送到私人nuget饲料提示证书
- CoolQ/DingTalk 实现CI/CD消息推送到群
- VMware公司将虚拟桌面的控制平台推送到Azure Cloud
- 使用一句 git 命令将仓库的改动推送到所有的远端
- ruby-on-rails – 无法推送到github,ssh:无法解析主机名
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
1024·人与机器共同进化
东西文库 / 译言·东西文库/电子工业出版社 / 2013-12-20 / 55元
《1024》:国内第一本专注于科技文化的mook。 本期创刊号将目光定焦在“人与机器”这个超热点领域。 如果把机器获得思维能力看作是一种进化, 那人类具备不朽之躯同样也是一种进化。 这是一个野心勃勃但又充满不确定性的未来。 在我们一厢情愿地猜测机器将在不远的将来赶超自己而惶惶不可终日时,人类其实还有一个机会——变得更像机器。这并非科幻小说,而是正在发生的现实。人类创造......一起来看看 《1024·人与机器共同进化》 这本书的介绍吧!