位置: IT常识 - 正文

【SpringBoot】自定义Starter(springboot自带tomcat吗)

编辑:rootadmin
【SpringBoot】自定义Starter

推荐整理分享【SpringBoot】自定义Starter(springboot自带tomcat吗),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:springboot自带tomcat吗,springboot自带的web容器有哪些,springboot自动装配原理简述,springboot自带tomcat吗,springboot自动配置原理(易懂),springboot自动装配原理简述,springboot自动配置原理(易懂),springboot自动装配原理,内容如对您有帮助,希望把文章链接给更多的朋友!

🚩本文已收录至专栏:Spring家族学习之旅 👍希望您能有所收获

一.概述

在使用SpringBoot进行开发的时候,我们发现使用很多技术都是直接导入对应的starter,然后就实现了springboot整合对应技术,再加上一些简单的配置,就可以直接使用了。那什么是Starter呢?使用Starter对我们开发有什么好处?自定义Starter能对我们有什么帮助呢?

(1) 什么是Starter?

官方文档给出了如下描述:

Starters are a set of convenient dependency descriptors that you can include in your application. You get a one-stop shop for all the Spring and related technologies that you need without having to hunt through sample code and copy-paste loads of dependency descriptors. For example, if you want to get started using Spring and JPA for database access, include the spring-boot-starter-data-jpa dependency in your project.

概述来说就是:当我们想使用某项技术与Spring结合进行使用时,很多时候可直接导入该技术的starter,而不必再去找该技术所依赖的n个坐标一起cv进去。

例如:我们想使用Spring开发web项目,不使用Starter可能需要导入这些坐标:

有没有一种想跑路的感觉,此外如果你导的不同jar包之间存在版本不兼容还会产生一系列版本冲突问题。而使用springboot提供的starter只需要导入一个坐标即可包含上面所有的jar包以及自动适配版本。

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>(2) 为什么要自定义Starter?

问题产生:

​ 在我们的日常开发工作中,经常会有一些独立于业务之外的通用模块,在许多场景下都能够用到,我们经常将其备份到一个地方下,然后如果在某一个工程中需要用这块功能的时候,需要将代码硬拷贝到其中,重新集成一遍,麻烦至极。

问题解决:

​ 我们在开发过程为了方便常常会封装各种工具类,使我们在项目中能很方便的进行调用。同样的,我们也可以将这些可独立于业务代码之外的功通用模块封装成一个个starter,复用的时候只需要将其在pom中引用依赖即可,SpringBoot为我们完成自动装配,简直不要太爽。通过我们自定义的Starter相当于一个大的工具模块,导入其他项目能够快速的实现功能的引入与剔除。

常见场景:

【SpringBoot】自定义Starter(springboot自带tomcat吗)

​ 例如短信发送模块,自定义一些sdk使得调用者更加方便使用等等功能。

二.使用示例(1) 引入

​ 在我们的web项目中,例如博客等,可能会添加一个记录系统访客IP及访问次数的功能,而这个功能模块可以应用到很多的地方。接下来我们一起通过实现这个模块来学习如何自定义Starter,来看看如何做到只需要一个Starter坐标以及简单的yml配置即可在项目中无感引入或摘除这个功能模块。

功能介绍:

​ 本案例的功能是统计网站独立IP访问次数的功能,并将访问信息在后台持续输出。整体功能是在后台每10秒输出一次监控信息(格式:IP+访问次数) ,当用户访问网站时,对用户的访问行为进行统计。

​ 例如:张三访问网站功能15次,IP地址:192.168.0.135,李四访问网站功能20次,IP地址:61.129.65.248。那么在网站后台就输出如下监控信息,此信息每10秒刷新一次。

IP访问监控+-----ip-address-----+--num--+| 192.168.0.135 | 15 || 61.129.65.248 | 20 |+--------------------+-------+

实现分析:

如何记录访问数据

如上所述,我们记录的数据是一个字符串(IP地址)对应一个数字(访问次数)的形式,此处存储数据我们可以使用java提供的map模型,也就是key-value的键值对模型,或者具有key-value键值对模型的存储技术,例如redis技术。本案例使用map作为实现方案,当然你也可以根据需要使用redis作为解决方案。

统计功能运行位置,因为每次web请求都需要进行统计,我们有若干个接口,不可能在每个请求中都手动调用一遍吧?因此使用拦截器会是比较好的选择。不过在实现初期,先使用调用的形式进行测试,等功能完成了,再改成拦截器的实现方案。

为了提升统计数据展示的灵活度,为统计功能添加配置项。输出频度,输出的数据格式,统计数据的显示模式均可以通过配置实现调整。

输出频度,默认10秒数据特征:累计数据 / 阶段数据,默认累计数据输出格式:详细模式 / 极简模式

A typical Spring Boot starter contains code to auto-configure and customize the infrastructure of a given technology, let’s call that “acme”. To make it easily extensible, a number of configuration keys in a dedicated namespace can be exposed to the environment. Finally, a single “starter” dependency is provided to help users get started as easily as possible.

概述来说就是:我们在引入一个starter后可轻松开始使用并且能够在配置文件中设置参数对其实现灵活调整。

如此我们便按照官方文档所推荐用法简单的设计了一个简单starter~

项目整体结构一览:

(2) 功能开发(2.1) 环境搭建

创建一个SpringBoot工程,实现本案例相关功能只需要导入如下坐标即可

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>(2.2) 统计访问ip&次数

​ 功能类的制作并不复杂,创建一个业务类,

本文链接地址:https://www.jiuchutong.com/zhishi/299889.html 转载请保留说明!

上一篇:2023 年8个ChatGPT 的替代品(2023年会出什么车)

下一篇:【Maven】maven安装、IDEA创建maven的web项目、添加依赖、集成Tomcat(maven安装成功命令)

  • 小米手环6微信支付怎么用(小米手环6微信通知怎么设置)

    小米手环6微信支付怎么用(小米手环6微信通知怎么设置)

  • 微信京东购物我的足迹怎么删除(微信京东购物我的评价在哪里)

    微信京东购物我的足迹怎么删除(微信京东购物我的评价在哪里)

  • 华为荣耀10青春版掉电快(华为荣耀10青春版有红外线功能吗)

    华为荣耀10青春版掉电快(华为荣耀10青春版有红外线功能吗)

  • 根据手机号可以查到个人信息吗(根据手机号可以找到人的姓名吗)

    根据手机号可以查到个人信息吗(根据手机号可以找到人的姓名吗)

  • 页眉和页脚命令在什么功能区中(页眉和页脚命令在什么选项卡中)

    页眉和页脚命令在什么功能区中(页眉和页脚命令在什么选项卡中)

  • 微信 完成了群公告是什么意思(微信完成了群公告什么意思,怎么做)

    微信 完成了群公告是什么意思(微信完成了群公告什么意思,怎么做)

  • 快手官方的剪辑软件是什么(快手官方剪辑神器)

    快手官方的剪辑软件是什么(快手官方剪辑神器)

  • 什么是村淘下单(如何使用村淘下单)

    什么是村淘下单(如何使用村淘下单)

  • 图形化用户接口的英文缩写是(图形化的用户界面)

    图形化用户接口的英文缩写是(图形化的用户界面)

  • 移动lte是什么网络(移动lte网络)

    移动lte是什么网络(移动lte网络)

  • ipad支持快充吗(苹果2019款ipad支持快充吗)

    ipad支持快充吗(苹果2019款ipad支持快充吗)

  • 机器语言程序在机器内是以什么形式表示(ai编程语言)

    机器语言程序在机器内是以什么形式表示(ai编程语言)

  • 虚拟光驱怎么安装(虚拟光驱怎么安装vs2015)

    虚拟光驱怎么安装(虚拟光驱怎么安装vs2015)

  • 数据压缩会造成音频质量下降吗(数据压缩会造成什么影响)

    数据压缩会造成音频质量下降吗(数据压缩会造成什么影响)

  • 苹果8带无线充电吗(苹果8带无线充电怎么打开)

    苹果8带无线充电吗(苹果8带无线充电怎么打开)

  • 淘宝怎么看自己的等级(淘宝怎么看自己的评价)

    淘宝怎么看自己的等级(淘宝怎么看自己的评价)

  • 手环如何判断深度睡眠(手环怎样知道深睡还是浅睡)

    手环如何判断深度睡眠(手环怎样知道深睡还是浅睡)

  • excel如何换行快捷键(如何在excel中换行快捷键)

    excel如何换行快捷键(如何在excel中换行快捷键)

  • 荣耀play3上市时间(荣耀play3手机怎么样哪年发布的)

    荣耀play3上市时间(荣耀play3手机怎么样哪年发布的)

  • 6s怎么弄微信分身(iphone6微信分身怎么弄)

    6s怎么弄微信分身(iphone6微信分身怎么弄)

  • p30锁屏时间设置(p30锁屏怎么设置时时间显示调整)

    p30锁屏时间设置(p30锁屏怎么设置时时间显示调整)

  • 苹果手机如何将来电设为静音(苹果手机如何将旧手机所有资料导入新手机)

    苹果手机如何将来电设为静音(苹果手机如何将旧手机所有资料导入新手机)

  • 华为鸿蒙OS加密DNS功能在哪? 鸿蒙开启自动加密DNS的技巧(鸿蒙密码锁设置密码的方法)

    华为鸿蒙OS加密DNS功能在哪? 鸿蒙开启自动加密DNS的技巧(鸿蒙密码锁设置密码的方法)

  • 小米MINI路由器的硬盘的详细教程(小米mini路由器mesh)

    小米MINI路由器的硬盘的详细教程(小米mini路由器mesh)

  • 阿罗内镇的村落,意大利翁布里亚大区 (© Maurizio Rellini/eStock Photo)(阿罗内镇的村落叫什么)

    阿罗内镇的村落,意大利翁布里亚大区 (© Maurizio Rellini/eStock Photo)(阿罗内镇的村落叫什么)

  • 小规模纳税人出售使用过的汽车
  • 个人租房缴纳由谁缴纳增值税
  • 个税系统中的离线算税和在线算税结果一样吗
  • 金融债券的利息收入
  • 个税抵扣租房能抵扣多少
  • 报销单与发票金额不符
  • 增值税期初应补税额计算
  • 金税盘地区编号怎么查
  • 收到免税发票怎么做账务处理
  • 哪些税不适用征管法
  • 项目一次性奖励会计分录怎么处理
  • 施工企业仪器设备入什么会计科目核算?
  • 买酒专票怎么可以抵税
  • 所得税申报错了扣款了怎么办
  • 金融保险定义
  • 职工福利费用于职工食堂食材补助办法
  • 资产负债表应收账款是负数怎么回事
  • 长期股权投资年度损益影响金额包括什么
  • 售后需要品控吗
  • 简易征收是优惠政策吗
  • 银行承兑汇票到期后多长时间失效
  • 向客户发放,赠品怎么写
  • i9 9900ks什么意思
  • 小规模纳税人计税方法
  • 房产契税征收率
  • 其他债权投资发生减值会影响所有者权益总额吗
  • 公司之间往来借款利息怎么记账
  • 财务软件的摊销额计入管理费用
  • 增值税附税的计算公式
  • 退多收款怎么做分录
  • PHP:pg_field_is_null()的用法_PostgreSQL函数
  • 出售低值易耗品的账务处理
  • 若依框架前后端一体化设计管理系统
  • 卖机械配件平台有哪些
  • 增资的会计处理方法
  • php不使用内置函数的情况下,输出数组中重复最多的元素
  • 通往萨卡洛布拉的火车
  • 在生产经营过程中违反什么规定
  • 公司账户转法人账户
  • 美团收购联联
  • 期末汇兑损益计算公式
  • vue2 自定义 el-radio-button 的样式并设置默认值的方法
  • 分公司在外地,企业怎么交税
  • 企业什么时候才能按工龄退休
  • 免征增值税的项目可以开专票吗
  • 买一赠一的销售方式
  • 增值税申报表33栏显示有欠缴税额
  • sql执行顺序优先级
  • 固定资产清理的账务处理
  • 税务实名认证是法人还是办税人
  • 车船税应计入税金及附加吗
  • 不动产租赁如何避税
  • 进项税转出怎么交税
  • 出口收入没有及时申报怎么处罚
  • 销项税计提多了
  • 纳税期限与缴库期限不符
  • 利润分配明细科目有哪些
  • 商业养老保险有风险吗
  • 筹建期间取得的利息收入 企业所得税
  • 营业收入就是开票的不含税金额吗
  • 主营业务成本如何做分录
  • 职工薪酬包括的内容
  • mysql中数据类型为是否
  • 计算机二级考试一年考几次
  • spyagent4.exe - spyagent4是什么进程
  • win8怎样获取管理员权限
  • 3.0vray安装教程
  • win10文件夹右上角搜索不能用
  • win10系统admin和oobe
  • win8鼠标右键无法弹出菜单
  • perl 计算
  • javascript sort排序
  • js如何创建类
  • 批处理检查输入文本是否为字母或数字
  • jquery自定义的方法有哪些
  • python源码分析工具
  • 专票开出去了多长时间必须打入账户
  • 重庆国税电子税务局手机版
  • 成品油消费税税目税率表2023
  • 去银行签贷款合同后多久办过户
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设