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

  • 路由器密码怎么设置(路由器密码)(路由器密码怎么分享给别人)

    路由器密码怎么设置(路由器密码)(路由器密码怎么分享给别人)

  • oppoa5导航键怎么设置(oppoa5手机导航键)

    oppoa5导航键怎么设置(oppoa5手机导航键)

  • oppo手机抖音怎么设置权限(oppo手机抖音怎么投屏到电视上)

    oppo手机抖音怎么设置权限(oppo手机抖音怎么投屏到电视上)

  • 红外线热像仪能看到手机吗(红外线热像仪能看到放屁吗)

    红外线热像仪能看到手机吗(红外线热像仪能看到放屁吗)

  • 拼多多买东西怎么不让别人看到好友买过(拼多多买东西怎么设置别人看不到)

    拼多多买东西怎么不让别人看到好友买过(拼多多买东西怎么设置别人看不到)

  • 为什么一直是连接资源中(为什么一直连的wifi连不上)

    为什么一直是连接资源中(为什么一直连的wifi连不上)

  • 全民k歌隐身访问听歌增加播放量吗(全民k歌隐身访问会留下记录吗)

    全民k歌隐身访问听歌增加播放量吗(全民k歌隐身访问会留下记录吗)

  • 指令和数据在计算机内部是以什么形式存储的(指令和数据在计算机中都是以十进制形式存储的)

    指令和数据在计算机内部是以什么形式存储的(指令和数据在计算机中都是以十进制形式存储的)

  • 手机号被注销了绑定的东西怎么办(手机号被注销了怎么收验证码)

    手机号被注销了绑定的东西怎么办(手机号被注销了怎么收验证码)

  • 华为p20怎么更新系统(华为p20怎么更新软件)

    华为p20怎么更新系统(华为p20怎么更新软件)

  • 红米note9pro上市时间(红米note9pro上市时间及价格)

    红米note9pro上市时间(红米note9pro上市时间及价格)

  • 为什么打开短信以后信息就直接退出(为什么打开短信之后是空白)

    为什么打开短信以后信息就直接退出(为什么打开短信之后是空白)

  • 华为怎么共享热点网络连接(华为手机共享热点在哪里设置)

    华为怎么共享热点网络连接(华为手机共享热点在哪里设置)

  • 华为p20pro是高端机吗(华为p20pro性价比高吗)

    华为p20pro是高端机吗(华为p20pro性价比高吗)

  • oppoARunit有什么功能(oppo arunit)

    oppoARunit有什么功能(oppo arunit)

  • 咪咕视频能不能用wifi(咪咕视频能不能投屏)

    咪咕视频能不能用wifi(咪咕视频能不能投屏)

  • p30月亮模式怎么打开(华为p30月亮模式怎么打开)

    p30月亮模式怎么打开(华为p30月亮模式怎么打开)

  • 微信200张图片怎么发(微信200张图片怎么发朋友圈)

    微信200张图片怎么发(微信200张图片怎么发朋友圈)

  • 微信web开发工具在哪(微信web开发者工具下载官网)

    微信web开发工具在哪(微信web开发者工具下载官网)

  • 冰雪节上的冰雕艺术作品,加拿大渥太华 (© S. Garcia Cournoyer/Alamy)(冰雪节上的冰雕图片)

    冰雪节上的冰雕艺术作品,加拿大渥太华 (© S. Garcia Cournoyer/Alamy)(冰雪节上的冰雕图片)

  • phpcms前台js获取不到cookie用户信息(html获取php数据)

    phpcms前台js获取不到cookie用户信息(html获取php数据)

  • 政府专项补助资金需要交所得税吗
  • 综合利用资源减计收入
  • 留抵税额账上比申报表多
  • 资金成本加价收入能作为收入开票吗
  • 个人处置打包债权取得的收入
  • 中小型物流公司简介
  • 已认证抵扣的进项发票,次月开具红字发票信息表,凭证
  • 不动产折旧费计算公式
  • 固定资产期初余额在哪里录入
  • 存货报废应如何记账
  • 给员工发中秋福利
  • 财务会计中的费用
  • 12月份奖金怎么扣个税
  • 详解出口退税的涵义
  • 增值税和增值税额的区别
  • 电子承兑汇票怎么打印出来
  • 增值税发票二联折叠票样式
  • 消耗性生物资产与生产性生物资产的区别
  • 加权平均数是什么意思的权
  • 公司汽车一年可以用多少油费
  • 空调维修详情介绍
  • 自建商品房转为自用增值税
  • 收到预付卡发票分录
  • 电脑qq聊天框变成一侧显示的软件版本
  • 长期股权投资转让需要交什么税
  • agent程序
  • 未知格式或损坏文件怎么办
  • linuxssh免密登录
  • 分享下会画画是怎样的体验
  • 零售企业退货分录
  • 其他应付款期初余额在哪方
  • 委托加工物资如何转入生产成本
  • 房屋装修各项费用比例
  • ipad air3发布会价格
  • wordpress调试模式
  • 康沃尔郡的大学
  • 前端框架源码
  • 2022年 change detection遥感图像变化检测 论文附代码
  • 现代服务包括哪些税目
  • 跨期发票的形成条件
  • 预计负债的主要账务处理
  • 资产负债表日后事项包括哪些
  • sqlserver怎么用
  • 工程施工科目借方尾差怎么调整
  • 购买图书的会计账务处理
  • 公司捐赠给个人公司要交税吗
  • 在建工程应交税金怎么算
  • 预缴税款是什么意思
  • 核定征收企业所得税的小型微利企业不得享受优惠政策
  • 如何判断有无运费险
  • 月末一般无余额的账户是( )
  • 党费会计核算科目有哪些
  • 企业接管的方式有
  • 建筑业服务包含哪些?
  • 工程结算收入是否缴纳增值税
  • 计提附加税金额
  • 印花税退还
  • 一般企业报税的税种
  • 国有资本金是什么意思
  • 差旅费借贷记账法的会计分录
  • 福利设施的定义
  • 财务人员需要填报的报表有哪些
  • 资金账簿印花税税率
  • mysql函数用法
  • win10禁用所有启动项
  • windows2008r2修改密码
  • safari macos
  • win10预览体验三个选项
  • 如何将windows 7升级到windows 10
  • 一岁的宝宝可以喝枸杞水吗
  • linux操作系统主要学什么
  • Bootstrap与KnockoutJs相结合实现分页效果实例详解
  • JavaScript的函数库
  • js插件写法
  • js中的三种弹出式消息提醒的命令是什么
  • mkdirs linux
  • yarn功能
  • 车船税缴费电子凭证
  • 企业党支部怎么称呼
  • 深圳税务局实名注册
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设