【SpringBoot】从零开始封装自己的starter并且引入到其他项目中使用

这篇具有很好参考价值的文章主要介绍了【SpringBoot】从零开始封装自己的starter并且引入到其他项目中使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

从零开始封装自己的starter并且引入到其他项目中使用

简介

本文将介绍如何从零开始封装自己的starter并且引入到其他项目中使用

为什么要自己封装starter?
这样可以对spring以及其他第三方提供的starter做二次封装或者封装一些自己需要的内容提供给其他项目使用,提高项目级的代码复用性。

一、创建一个新的spring-boot项目

首先我们需要新建一个spring-boot项目,为了防止发生maven依赖问题,我们这里不选择任何spring提供的组件,如果添加了请确保引用的项目中没有这个组件另外不要忘记改maven源

【SpringBoot】从零开始封装自己的starter并且引入到其他项目中使用,项目整理,spring boot,后端,java,starter

二、创建META-INF/spring.factories

把test文件夹删掉,main目录下创建resources/META-INF/spring.factories文件
【SpringBoot】从零开始封装自己的starter并且引入到其他项目中使用,项目整理,spring boot,后端,java,starter

把主程序也删掉,我们的starter不需要启动

【SpringBoot】从零开始封装自己的starter并且引入到其他项目中使用,项目整理,spring boot,后端,java,starter

三、测试案例

接下来编写一个拦截器,拦截所有方法并且打印一些内容看看效果

先把pom文件中乱七八糟的东西删干净,并引入一个web模块

	<dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

Config文件

package com.ez4sterben.mytestspringbootstarter.config;

import com.ez4sterben.mytestspringbootstarter.interceptor.MyTestInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 我的测试web mvc配置
 *
 * @author ez4sterben
 * @date 2023/07/18
 */
@Configuration
public class MyTestWebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyTestInterceptor())
                .addPathPatterns("/**");
    }
}

Interceptor文件

package com.ez4sterben.mytestspringbootstarter.interceptor;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 我的测试拦截器
 *
 * @author ez4sterben
 * @date 2023/07/18
 */
@Component
public class MyTestInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("--------------------starter中的拦截器生效了!------------------------");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

spring.factories文件中加入下面这段内容开启自动配置

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.ez4sterben.mytestspringbootstarter.config.MyTestWebMvcConfig

目前项目结构如下

【SpringBoot】从零开始封装自己的starter并且引入到其他项目中使用,项目整理,spring boot,后端,java,starter

四、打包starter

打开idea右侧maven依次点击生命周期中的install以及package
【SpringBoot】从零开始封装自己的starter并且引入到其他项目中使用,项目整理,spring boot,后端,java,starter

五、使用starter

打开我们的本地maven仓库

【SpringBoot】从零开始封装自己的starter并且引入到其他项目中使用,项目整理,spring boot,后端,java,starter

我们的starter已经是jar包的形式了,接下来就打开自己的其他项目来引用这个starter

        <dependency>
            <groupId>com.ez4sterben</groupId>
            <artifactId>mytest-spring-boot-starter</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

随后刷新maven启动项目即可,随便找个接口测试一下
【SpringBoot】从零开始封装自己的starter并且引入到其他项目中使用,项目整理,spring boot,后端,java,starter

【SpringBoot】从零开始封装自己的starter并且引入到其他项目中使用,项目整理,spring boot,后端,java,starter
测试成功!

六、总结

本文做了一个比较基础的案例,大家可以尝试这种方式封装自己的starter,而且在starter中已经引入了web模块,所以在引入starter的项目中就不用再引入了,通过这种方式可以把在很多项目都固定写的基本内容封装起来,比如通用返回值、基本常量、基本枚举类以及一些统一鉴权和统一异常拦截。可以让这些内容一次配置好后在各个项目中均可以使用。文章来源地址https://www.toymoban.com/news/detail-596332.html

到了这里,关于【SpringBoot】从零开始封装自己的starter并且引入到其他项目中使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LeetCode 刷题记录——从零开始记录自己一些不会的

    1. 最多可以摧毁的敌人城堡数目 题意 思路 两层循环,太low了 用一个变量记录前一个位置 代码 2. 到达终点的数字 题意 思路 代码 3. 单词的压缩编码 题意 思路 代码 思路2 去找到是否不同的单词具有相同的后缀,我们可以将其反序之后插入字典树中。例如,我们有 “time”

    2024年02月09日
    浏览(66)
  • 从零开始用Nodejs搭建一个MQTT服务器,并且用stm32通过esp8266进行消息订阅和发布

    最近在做一个物联网项目,需要用到服务器进行数据的存储和数据的请求和发送,之前我用过onenet平台上的http服务,虽然能通过get和post请求进行数据的提交和发送,但是平台上的数据发生改变却不能主动推送给esp8266,与我此次的项目不符合,所以pass。然后我了解了下mqtt协

    2024年02月04日
    浏览(52)
  • 一篇SEO指南:新手如何从零开始优化自己的网站

    在如今的数字时代,拥有一个优化良好的网站对于任何企业或个人来说都是至关重要的。但是,对于SEO新手来说,如何从零开始优化自己的网站可能是一项看似艰巨的任务。在本文中,我们将为您提供一份SEO指南,帮助您了解从零开始优化自己的网站的过程。 确定您的目标关

    2024年02月02日
    浏览(111)
  • 从零开始画自己的DAG作业依赖图(一)--前期准备

    背景: 由于业务场景需要展示作业之间的依赖关系,由于一些开源的插件和当前的业务逻辑有一些冲突,个人打算尝试从零开始,一点点实现自己的DAG图。同时用博客记录自己实现过程和总结,不正确的地方,欢迎指正提升。 场景分析: 数据开发中常常有作业之间的依赖,

    2024年02月05日
    浏览(51)
  • 构建自己的ChatGPT:从零开始构建个性化语言模型

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月15日
    浏览(48)
  • 记录自己从零开始创建个人小程序到发布的大致过程

    首先不管是要创建个人小程序还是公众号等,都要打开微信公众平台。本文以微信小程序为例,创建一个手工花名片。本文只用于自己学习记录。参考微信社区 1、打开微信公众,点击注册 链接:https://mp.weixin.qq.com/ 2、点击注册后,跳转页面,点击小程序 3、填写注册小程序

    2024年02月12日
    浏览(52)
  • 从零基础开始开发自己的第一个微信小程序

    通过本篇blog,你可以熟悉从零开始,搭建小程序开发环境,并运行起自己的第一个小程序。 1、 注册账号 2、 下载开发工具搭建开发环境 3、 创建工程,编写代码 4、 手机上查看效果 通过以上四步就能创建属于自己的小程序了。 注册完成后是这样的 小程序开发工具下载地址

    2024年02月14日
    浏览(82)
  • 从零开始复现seaformer(语义分割)训练自己的数据集——linux

    出于模型轻量化需求,需对原有的皮肤分割模型进行重新研发。seaformer是作为今年复旦大学和腾讯联合提出的轻量级语义分割算法,具有很好的参考价值。因此,作者基于seaformer算法对自研数据集进行训练,完成轻量级皮肤分割模型的开发。 1.下载地址:https://github.com/fudan

    2024年04月12日
    浏览(36)
  • 深入浅出Python:从零开始搭建自己的Web服务器

    第一部分:前言与环境准备 1. 前言 随着互联网的发展,越来越多的应用都运行在Web上,而Web服务器则成为了支撑这一切的关键。在本文中,我们将利用Python来创建自己的简易Web服务器。通过这个过程,你不仅可以深入了解Web服务器的工作原理,还能够掌握Python的基础知识。

    2024年02月03日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包