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

  • 网站优化在百度搜索算法不断调整怎样不受影响?(网站优化在百度哪里找)

    网站优化在百度搜索算法不断调整怎样不受影响?(网站优化在百度哪里找)

  • 企业微信可以重新实名认证吗(企业微信可以重播吗)

    企业微信可以重新实名认证吗(企业微信可以重播吗)

  • 黑鲨4s怎么设置肩键(黑鲨4s怎么设置黑白模式)

    黑鲨4s怎么设置肩键(黑鲨4s怎么设置黑白模式)

  • 怎么给airpods2充电(airpods2使用技巧充电)

    怎么给airpods2充电(airpods2使用技巧充电)

  • 智行和12306一样吗(智行12306和12306有什么区别)

    智行和12306一样吗(智行12306和12306有什么区别)

  • 手机停机多久微信不能用(手机经常关机好吗)

    手机停机多久微信不能用(手机经常关机好吗)

  • 迅雷抱团下载什么意思(迅雷抱团才能下载)

    迅雷抱团下载什么意思(迅雷抱团才能下载)

  • 为什么手机话费充不了QQ会员(为什么手机话费充值了还是无服务)

    为什么手机话费充不了QQ会员(为什么手机话费充值了还是无服务)

  • 淘宝追评时间是多久(淘宝追评时间是多久删除)

    淘宝追评时间是多久(淘宝追评时间是多久删除)

  • hd5300相当于什么显卡(hd5300参数)

    hd5300相当于什么显卡(hd5300参数)

  • 打印机可以连接手机吗(打印机可以连接苹果手机吗)

    打印机可以连接手机吗(打印机可以连接苹果手机吗)

  • 苹果视网膜屏幕和普通屏幕区别(苹果视网膜屏幕分辨率)

    苹果视网膜屏幕和普通屏幕区别(苹果视网膜屏幕分辨率)

  • 拉黑并且删除怎么知道(拉黑并且删除怎么拉回来)

    拉黑并且删除怎么知道(拉黑并且删除怎么拉回来)

  • 苹果8p外放声音小(苹果8p放声音屏幕震动是原装屏幕吗)

    苹果8p外放声音小(苹果8p放声音屏幕震动是原装屏幕吗)

  • 快手配音用的什么软件(快手配音用的什么软件免费)

    快手配音用的什么软件(快手配音用的什么软件免费)

  • bilibili大会员可以登几个

    bilibili大会员可以登几个

  • vivo手机怎么压缩图片(vivo手机怎么压缩照片)

    vivo手机怎么压缩图片(vivo手机怎么压缩照片)

  • xsmax是a几处理器(xsmax处理器)

    xsmax是a几处理器(xsmax处理器)

  • ipad打字怎么换行(苹果平板怎么换打字)

    ipad打字怎么换行(苹果平板怎么换打字)

  • 魅族16sPro怎么隐藏照片(魅族16怎么隐藏应用)

    魅族16sPro怎么隐藏照片(魅族16怎么隐藏应用)

  • 美团怎么设置限购2份(美团怎么设限购)

    美团怎么设置限购2份(美团怎么设限购)

  • 探探看不到对方朋友圈(探探看不到对方资料)

    探探看不到对方朋友圈(探探看不到对方资料)

  • 索尼相机的nfc在哪(索尼相机nfc功能)

    索尼相机的nfc在哪(索尼相机nfc功能)

  • 小米9怎么调亮屏时间(小米怎么调亮度更暗)

    小米9怎么调亮屏时间(小米怎么调亮度更暗)

  • 快手怎么看热门作品(快手怎么看热门不热门)

    快手怎么看热门作品(快手怎么看热门不热门)

  • 单反如何拍视频(单反相机如何拍视频)

    单反如何拍视频(单反相机如何拍视频)

  • Python实现人工神经网络回归模型(MLPRegressor算法)并基于网格搜索(GridSearchCV)进行优化项目实战(如何用python制作人工智能)

    Python实现人工神经网络回归模型(MLPRegressor算法)并基于网格搜索(GridSearchCV)进行优化项目实战(如何用python制作人工智能)

  • 增值税电子普票没有电子章有效吗
  • 简易计税会计分录举例
  • 进项有留底怎么结转
  • 没有参加会计继续教育会怎样
  • 固定资产盘点折旧怎么算
  • 公司账户进账必须交税吗
  • 资产负债表的期初余额是年初余额吗
  • 去税务局申报增值税需要带税盘吗
  • 打印社保缴费凭证需要什么证件
  • 报销差旅费需要交进项税吗
  • 跨省工程需要什么条件
  • 转贴现视为贷款银行如何进行账务处理?
  • 已确认并转销的应收账款会计分录
  • 工业总产值填报原则
  • 一张报关单上最多不能超过
  • 进口有退税吗最新政策
  • 本月没有发生额本月合计
  • 金蝶期末调汇怎么生成凭证
  • 固定资产折旧年限的最新规定2023
  • 进口料件和出口成品的关系
  • 基建管理费如何进行结转?
  • 公司支付给个人的货款怎么入账
  • 这个月发票没用怎么做账
  • 所得税汇算清缴分录怎么做
  • 全额抵免的计算
  • 税金及附加怎么登明细账
  • 公司自建办公楼
  • 航天税控服务费
  • PHP:mb_ereg_search_init()的用法_mbstring函数
  • 会计分录错误用什么方法更正
  • dns进程
  • 微信公众号 h5 保存openid
  • 无形资产出租怎么开具发票
  • 资产收购的账务处理办法
  • 农村个体户需要报税吗
  • 为什么要划分等价类
  • vue3的ref,reactive的使用和原理解析
  • python调用cuda执行加法
  • 量子退火算法入门6
  • yolo训练教程
  • es6解构赋值对象
  • php的foreach遍历原理
  • 研发失败的费用允许加计扣除吗
  • 销项负数会计分录怎么写
  • sqlserver uuid怎么获取
  • 收付实现制的适用范围
  • 职工教育经费能开专票吗
  • 农业合作社账务都有什么科目
  • 增值税专用发票怎么开
  • 现金日记账1月份本年累计吗
  • 软件测试费用明细
  • 外商投资企业开什么发票
  • Linux系统下Mysql使用简单教程(一)
  • mysql如何优化性能
  • mysql数据库中SELECT * FROM是什么
  • sql行列转换方式
  • wrsvn.exe是什么
  • 360卫士重装电脑够进入不了桌面
  • 运维zabbix
  • dgservice.exe是什么进程
  • win101909消费者版是什么意思
  • centos搭建服务器
  • 安装怎么弄
  • win8如何输入命令
  • ext.grid.gridpanel
  • windows升级node版本
  • linux rsync同步命令(值得收藏)
  • perl中use的用法
  • cocos2d-x教程
  • unity3d教学视频
  • unity 3d教程
  • jquery.ui
  • jquery的css方法
  • JavaScript ParseFloat()方法
  • 国家税务总局张局长
  • 企业员工可以放弃购买社保吗
  • 税务人员服务态度恶劣怎么办
  • 北京地方税务局李宗定
  • 豫事办登录时密码叫重置什么原因
  • 失业金存在多个账户
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设