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

栏目: Java · 发布时间: 5年前

内容简介:自制一个Spring Boot Starter并推送到远端公服进行管理传统的 Maven项目一般将需要被复用的组件做成 Module来进行管理,以便二次调用;而在 Spring Boot项目中我们则可以使用更加优雅的 Spring Boot Starter来完成这一切。

自制一个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并推送到远端公服

使用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并推送到远端公服》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

UNIX编程艺术

UNIX编程艺术

Eric S. Raymond / 姜宏、何源、蔡晓俊 / 电子工业出版社 / 2011-1 / 69.00元

本书主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,由公认的Unix编程大师、开源运动领袖人物之一Eric S. Raymond倾力多年写作而成。包括Unix设计者在内的多位领域专家也为本书贡献了宝贵的内容。本书内容涉及社群文化、软件开发设计与实现,覆盖面广、内容深邃,完全展现了作者极其深厚的经验积累和领域智慧。一起来看看 《UNIX编程艺术》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具