当前位置:   article > 正文

如何自制一个Spring Boot Starter并推送到远端公服

如何自制一个Spring Boot Starter并推送到远端公服

在现代Java开发中,Spring Boot无疑是一个强大且便捷的框架,它通过提供大量的Starter来简化依赖管理和项目配置。有时,我们可能需要为特定功能或团队定制Starter。本文将指导你如何创建自己的Spring Boot Starter并将其推送到远程公共服务器上,以便于团队成员或其他开发者使用。


新建项目

本文准备封装一个简单的 MD5摘要工具的 Starter,命名为 md5test-spring-boot-starter,其本质就是一个 Maven项目,只不过我们需要完善pom文件的相关依赖:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.yu</groupId>
  7. <artifactId>md5Cipher-spring-boot-starter</artifactId>
  8. <version>1.3.1</version>
  9. <properties>
  10. <maven.compiler.source>8</maven.compiler.source>
  11. <maven.compiler.target>8</maven.compiler.target>
  12. </properties>
  13. <dependencies>
  14. <dependency>
  15. <groupId>org.springframework.boot</groupId>
  16. <artifactId>spring-boot-autoconfigure</artifactId>
  17. </dependency>
  18. </dependencies>
  19. <dependencyManagement>
  20. <dependencies>
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-dependencies</artifactId>
  24. <version>2.6.13</version>
  25. <type>pom</type>
  26. <scope>import</scope>
  27. </dependency>
  28. </dependencies>
  29. </dependencyManagement>
  30. </project>

编写业务逻辑

首先提供一个 MD5Util工具类,负责实际的 MD5加密:

  1. package com.yu.utils;
  2. import java.security.MessageDigest;
  3. public class MD5Util {
  4. public static String getMD5(String source) {
  5. return getMD5(source.getBytes());
  6. }
  7. public static String getMD5(byte[] source) {
  8. String s = null;
  9. char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
  10. try {
  11. MessageDigest md = MessageDigest.getInstance("MD5");
  12. byte[] tmp;
  13. synchronized (MD5Util.class) {
  14. md.update(source);
  15. tmp = md.digest();
  16. }
  17. char str[] = new char[16 * 2];
  18. int k = 0;
  19. for (int i = 0; i < 16; i++) {
  20. byte byte0 = tmp[i];
  21. str[k++] = hexDigits[byte0 >>> 4 & 0xf];
  22. str[k++] = hexDigits[byte0 & 0xf];
  23. }
  24. s = new String(str);
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. }
  28. return s;
  29. }
  30. }

再来提供一个 MD5Service类 进行一次封装

  1. public class MD5Service {
  2. public String getMD5(String input) {
  3. return MD5Util.getMD5(input.getBytes());
  4. }
  5. }

编写自动装配类

这一步十分重要,也是编写 Spring Boot Starter最重要的一步:

  1. @Configuration
  2. public class MD5AutoConfiguration {
  3. @Bean
  4. public MD5Service md5Service() {
  5. return new MD5Service();
  6. }
  7. }

当然此处可以说是最简自动装配类了,该部分其实还包含各种丰富的可控注解,可以 参考 Spring Boot官方文档!

编写 spring.factories

我们还需要在 resources/META-INF/ 下创建一个名为 spring.factories的文件,然后置入以下内容:

  1. org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  2. com.yu.config.MD5AutoConfiguration

推送到远端仓库

很多公司都搭有私有的 Maven仓库,但个人实验可以借助于 JitPack这个 “远端公服”来为我们托管自制的 Spring Boot Starter。

我们将编写好的 Spring Boot Starter代码置于 Github公有仓库上,然后通过 JitPack来拉取我们的代码并打包生成Jar包即可。

使用 Spring Boot Starter

新建一个测试工程来测试一下我们编写的 md5-cipher-spring-boot-starter。工程创建完毕后,在 pom.xml中加入如下两个元素:

  • 添加 JitPack repository
  1. <repositories>
  2. <repository>
  3. <id>jitpack.io</id>
  4. <url>https://jitpack.io</url>
  5. </repository>
  6. </repositories>
  • 添加 md5-cipher-spring-boot-starter依赖:
  1. <dependency>
  2. <groupId>com.github.lnoom</groupId>
  3. <artifactId>md5-cipher-spring-boot-starter</artifactId>
  4. <version>d315929d19</version>
  5. </dependency>

再编写一个测试 Controller来测一下MD5摘要算法的功能:

application.yml

  1. md5:
  2. password: zhangyu
  1. @RestController
  2. public class TestController {
  3. @Autowired
  4. private MD5Service md5Service;
  5. @Value("${md5.password}")
  6. private String password;
  7. @GetMapping("/test")
  8. public ResponseEntity<String> getMD5() {
  9. String result = "MD5加密结果为:" + md5Service.getMD5(password);
  10. return ResponseEntity.ok(result);
  11. }
  12. }

调用 /test接口后的加密结果为:

MD5加密结果为:AE61268246C931C4160F1DBD539CC073

(jitpack.io) 引入不生效问题

在当前项目的maven对应的 setting.xml 中,修改一下镜像的配置,即:

原本是

<mirrorOf>*</mirrorOf>

改为:

<mirrorOf>*,!jitpack.io</mirrorOf>

创建并分享一个Spring Boot Starter不仅可以提高开发效率,还能促进团队间的协作和技术共享。通过遵循上述步骤,你可以快速地制作并部署自定义的Starter,让其他开发者也能轻松集成和使用你的代码。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/751135
推荐阅读
相关标签
  

闽ICP备14008679号