位置: 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安装成功命令)

  • 网站优化时难免会碰着网站被降权(网站优化1)

    网站优化时难免会碰着网站被降权(网站优化1)

  • iqoo游戏空间怎么添加到桌面(iqoo游戏空间怎么关闭)

    iqoo游戏空间怎么添加到桌面(iqoo游戏空间怎么关闭)

  • 荣耀30pro的机身尺寸是多大(荣耀30pro的机身长宽是多少)

    荣耀30pro的机身尺寸是多大(荣耀30pro的机身长宽是多少)

  • 苹果无线耳机二代和三代的区别(苹果无线耳机二代pro)

    苹果无线耳机二代和三代的区别(苹果无线耳机二代pro)

  • 安卓手机如何打开.pps文件(安卓手机如何打开.p7b文件)

    安卓手机如何打开.pps文件(安卓手机如何打开.p7b文件)

  • qq关联后对方能看到聊天记录吗(QQ关联后对方能看到空间相册吗)

    qq关联后对方能看到聊天记录吗(QQ关联后对方能看到空间相册吗)

  • 什么叫字节跳动(什么叫字节跳动啊)

    什么叫字节跳动(什么叫字节跳动啊)

  • 微信删除聊天框就没有聊天记录了吗(微信删除聊天框后聊天记录还有吗)

    微信删除聊天框就没有聊天记录了吗(微信删除聊天框后聊天记录还有吗)

  • 华为p40是曲面屏手机吗(华为p40是曲面屏还是瀑布屏)

    华为p40是曲面屏手机吗(华为p40是曲面屏还是瀑布屏)

  • 关闭系统休眠功能利弊(关闭系统休眠功能会怎么样)

    关闭系统休眠功能利弊(关闭系统休眠功能会怎么样)

  • 手机卡住了,完全就没有反应,怎么办(我手机卡住了)

    手机卡住了,完全就没有反应,怎么办(我手机卡住了)

  • 手机屏幕突然全是雪花(手机屏幕突然全黑了没关机)

    手机屏幕突然全是雪花(手机屏幕突然全黑了没关机)

  • 3990x用什么散热器(3990x用什么风冷)

    3990x用什么散热器(3990x用什么风冷)

  • 磁盘性能是指什么(磁盘性能重要吗)

    磁盘性能是指什么(磁盘性能重要吗)

  • 笔记本电脑没有声音是什么问题(笔记本电脑没有wifi)

    笔记本电脑没有声音是什么问题(笔记本电脑没有wifi)

  • 浏览器flash插件是什么(浏览器flash插件怎么启用)

    浏览器flash插件是什么(浏览器flash插件怎么启用)

  • 苹果手机开省电模式对电池有影响吗(苹果手机开省电模式玩游戏好不好)

    苹果手机开省电模式对电池有影响吗(苹果手机开省电模式玩游戏好不好)

  • 微机中的硬盘是指什么(电脑固态硬盘怎么装)

    微机中的硬盘是指什么(电脑固态硬盘怎么装)

  • ipad支持otg吗(ipad支持ot g数据线吗)

    ipad支持otg吗(ipad支持ot g数据线吗)

  • 淘宝开团提醒怎么取消(淘宝开团提醒怎么关闭最新)

    淘宝开团提醒怎么取消(淘宝开团提醒怎么关闭最新)

  • wps怎么替换文字(wps怎么替换文字字体不变)

    wps怎么替换文字(wps怎么替换文字字体不变)

  • 苹果剪切板怎么打开(苹果剪切板怎么弄)

    苹果剪切板怎么打开(苹果剪切板怎么弄)

  • 数据库外码的定义(数据库外码的定义语句)

    数据库外码的定义(数据库外码的定义语句)

  • 未接通对方手机有显示吗(未接通对方手机能打通吗)

    未接通对方手机有显示吗(未接通对方手机能打通吗)

  • 抖音点赞取消有痕迹么(抖音点赞取消有什么影响)

    抖音点赞取消有痕迹么(抖音点赞取消有什么影响)

  • 苹果wapi是什么意思(苹果wapi是什么用)

    苹果wapi是什么意思(苹果wapi是什么用)

  • 运动手环的税收分类编码是
  • 残疾人就业保障金会计分录怎么做
  • 房地产增值税抵减土地出让金
  • 公共汽车出租车
  • 企业所得税为什么那么高
  • 红字发票冲销的销项税怎么处理
  • 期末留抵税额可以留多久
  • 公司聘请专家的差旅费可以税前扣除吗
  • 工程预付款有发票怎么做凭证
  • 小规模没有进项票可以开销项票吗
  • 企业多扣个税怎么处理
  • 个人所得税是次月申报上月的吗怎么填
  • 专票密码区压线可以报销吗
  • 个税零申报工资填0吗
  • 现金采购合理吗
  • 应收账款坏账准备计算表
  • 发票分割单可以抵扣吗
  • 发票已抵扣未入账
  • 银行承兑找个人怎么操作
  • 印花税是按开票金额还是收入
  • 非盈利组织捐赠现金支需要什么资料
  • 专项资金支出时能直接转出吗
  • 专设销售机构的各项经费应列支什么科目
  • 出口货物做内销处理
  • 简易计税 科目
  • 图灵sdk
  • 收到股东垫付款的会计分录
  • 荣耀x10升级鸿蒙系统好用吗
  • nclaunch.exe - nclaunch进程有什么用 是什么意思
  • 应付账款与其他应付款科目调整
  • 房地产企业如何计算土地使用税
  • 长期股权投资会减值吗
  • 公司投资资金
  • 公司处理固定资产车辆怎么开发票
  • 物流公司过户给我需要做什么
  • 有形动产的租赁增值税税率是多少
  • Blog2N如何计算
  • 公司的财务报表能看出什么
  • 终止经营净利润含义
  • python PaddleOCR库的介绍
  • 两个mysql冲突怎么办
  • sqlserver还原数据库一直显示正在执行0%
  • 织梦怎么导入数据库
  • 应税销售行为有哪些
  • 银行代发工资流程
  • sql server功能选择
  • 小企业在购买商品过程中发生的费用
  • 暂估成本账务处理
  • 增值税税控系统专用设备费及技术维护费抵扣
  • 小规模纳税人申报增值税的操作流程
  • 全年一次性奖金并入或单独哪个好
  • 转账支付水电费
  • 转出未交增值税和未交增值税区别
  • 办外经证需要交税吗
  • 研发费用加计扣除是什么意思啊
  • 每月增值税怎么做账
  • 建筑公司可以收工程款发票吗
  • 忘交残保金了怎么补交
  • sqlserver存储过程返回多个结果集
  • 在mac上如何使用微信
  • xp系统cad32位用哪个版本
  • XP系统怎么删除密码
  • wp8.0升级8.1
  • ububtu安装教程
  • explorer.exe是啥意思
  • 五笔输入法怎么切换中文
  • win10脱机使用
  • OpenGL ES Emulator比较
  • linux命令提示符
  • linux搭建ftp服务器
  • Unity3D&&TexturePacker
  • android手机屏幕采集触摸区域所有点
  • android:imeOptions属性
  • jquery入口
  • javascript的介绍
  • 安阳文峰区小学招生
  • 怎么在年报查询个人信息
  • 东莞税收突破2000亿
  • 双方交换住房可以吗
  • 新企业会计准则长期待摊费用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设