自己实现一个jar包(starter组件)

本文详细介绍如何创建自定义Spring Boot Starter,包括配置类、自动配置原理及如何将其打包为可独立使用的第三方jar包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先简单回忆一下springboot是如何将第三方依赖库(jar包)导入项目中的,并通过bean容器管理,实现最终的依赖注入:是通过注解@EnableAutoConfiguration实现的,通过SpringFactoriesLoader 最终扫描jar包下的META-INF/spring.factories文件,将XxxAutoConfiguration的bean装载到bean容器,实现自动配置。自动配置原理详解,点击查看:源码分析pom.xml第三方依赖如何自动配置导入Bean容器SpringFactoriesLoader-spring.factories
本文介绍如何自己实现一个组件,打成jar包,并可以在其他项目中以第三方jar包的形式引入。

一. 自己写一个jar包

  1. 创建一个工程,可以是maven工程。
    在这里插入图片描述
  2. 在pom.xml中引入spring boot starter基础库依赖
    在这里插入图片描述
    在这里插入图片描述
  3. 自定义一个配置类,必须用@Configuration注解标识这是一个配置类。
    在这里插入图片描述
    @Bean表示该方法返回的实例将被自动装配进入bean容器。
    @ConditionOnClass表示,需要项目中存在ThreadPoolExecutor类,这是jdk自带的,所以一定成立。
  4. 在resources路径下建立META-INF/spring.factories
    在这里插入图片描述
    spring.factories文件中写的是该jar包对外提供类/接口的全限定类名/类路径。
  5. 将该工程打成jar包
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

二. 将jar包发布到本地maven仓库,用于作为其他项目的jar包导入。

  1. 将jar包复制到本地的maven仓库。
    在这里插入图片描述
  2. 在本地的repository路径下,启动cmd,执行命令:
mvn install:install-file -Dfile=D:\apache-maven-3.6.1\apache-maven-3.6.1\ThreadPoolStarterTest-1.0-SNAPSHOT.jar -DgroupId=org.example -DartifactId=ThreadPoolStarterTest -Dversion=1.0-SNAPSHOT -Dpackaging=jar

在这里插入图片描述
其中:

  • -Dfile 是jar包所在本地maven仓库路径
  • -DgroupId 是组织名称Id
  • -DartifactId=项目名称id
  • -Dversion=版本号
    执行成功:
    在这里插入图片描述

三. 在其他项目中引入(本地项目,因为jar包只发布到了本地仓库)该自己写的jar包starter

在这里插入图片描述
在这里插入图片描述
测试:

package com.example.demo.controller;

import myorg.myexample.MyThreadPoolAutoConfiguration;
import org.springframework.beans.factory.annotation.Autowired;

@Controller
public class TraceDataDetailController {
    @Autowired
    private MyThreadPoolAutoConfiguration myThreadPoolAutoConfiguration;
    
    public void test() {
    //可以调用jar包中MyThreadPoolAutoConfiguration类的myStarterTest方法。
        myThreadPoolAutoConfiguration.myStarterTest();
        System.out.println("自定义jar中的核心线程数:"+myThreadPoolAutoConfiguration.myThreadPool().getCorePoolSize());
    }
}
//打印结果:
我是ThreadPool组件的方法---

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值