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

  • iphone12和华为mate40pro的区别(iphone12和华为mate30pro哪个好)

    iphone12和华为mate40pro的区别(iphone12和华为mate30pro哪个好)

  • iphone12防水等级是多少(苹果12手机防水等级)

    iphone12防水等级是多少(苹果12手机防水等级)

  • 情侣空间网络繁忙(情侣空间系统繁忙截图)

    情侣空间网络繁忙(情侣空间系统繁忙截图)

  • 钉钉教师端能看到什么(钉钉教师端能看见补回放的时间么)

    钉钉教师端能看到什么(钉钉教师端能看见补回放的时间么)

  • 像素是怎么计算的(像素怎么计算大小)

    像素是怎么计算的(像素怎么计算大小)

  • 魅族17跟17pro区别(魅族17和17pro)

    魅族17跟17pro区别(魅族17和17pro)

  • 笔记本c盘在哪里打开(电脑机械硬盘怎么安装)

    笔记本c盘在哪里打开(电脑机械硬盘怎么安装)

  • 磊科路由器恢复出厂后没网了(磊科路由器恢复出厂设置后怎么重新设置)

    磊科路由器恢复出厂后没网了(磊科路由器恢复出厂设置后怎么重新设置)

  • 淘宝提问一般多久显示(淘宝去提问多久会显示出来)

    淘宝提问一般多久显示(淘宝去提问多久会显示出来)

  • 下载过的软件删除了,怎么看历史记录(下载过软件删除还能找到吗)

    下载过的软件删除了,怎么看历史记录(下载过软件删除还能找到吗)

  • 快手号被盗会有什么后果(如果你的快手号被盗会有什么提示嘛)

    快手号被盗会有什么后果(如果你的快手号被盗会有什么提示嘛)

  • ipv6的ip地址有多少位(ipv6地址是什么)

    ipv6的ip地址有多少位(ipv6地址是什么)

  • 手机看抖音为什么老卡(手机看抖音为什么接不到微信视频)

    手机看抖音为什么老卡(手机看抖音为什么接不到微信视频)

  • 苹果x可以用多少w的充电器(苹果x可以用多少年)

    苹果x可以用多少w的充电器(苹果x可以用多少年)

  • realme怎么关闭开发者选项(realme 怎么关掉所以打开应用)

    realme怎么关闭开发者选项(realme 怎么关掉所以打开应用)

  • 芒果tv会员在哪取消(芒果tv会员在哪里可以兑换)

    芒果tv会员在哪取消(芒果tv会员在哪里可以兑换)

  • 哈罗助力车自动充电吗(哈罗助力车自动扣费)

    哈罗助力车自动充电吗(哈罗助力车自动扣费)

  • 数据加密的基本功能包括(数据加密的基本模型)

    数据加密的基本功能包括(数据加密的基本模型)

  • 微信定位怎么设置(微信定位怎么设置国外)

    微信定位怎么设置(微信定位怎么设置国外)

  • 网易云浴室混响怎么开(网易云混响在哪设置)

    网易云浴室混响怎么开(网易云混响在哪设置)

  • 微信个人相册在哪(微信个人相册在哪里找手机)

    微信个人相册在哪(微信个人相册在哪里找手机)

  • 抖音怎么缩小屏幕比例(抖音缩小屏幕怎么变音频了)

    抖音怎么缩小屏幕比例(抖音缩小屏幕怎么变音频了)

  • x5690相当于什么cpu(x5690cpu参数)

    x5690相当于什么cpu(x5690cpu参数)

  • x9plus有nfc功能吗(vivo x9s plus有没有nfc功能)

    x9plus有nfc功能吗(vivo x9s plus有没有nfc功能)

  • 快手如何发布超长视频(快手如何发布超清视频)

    快手如何发布超长视频(快手如何发布超清视频)

  • 生产设备改扩建会计分录
  • 职工食堂费用计入管理费用
  • 增值税改革后增值税申报表怎么填写
  • 退回以前年度所得税费用会计分录
  • 企业职工遣散费标准
  • 累计折旧计入资产负债表什么科目
  • 补偿性余额利息的计算公式
  • 公众号注册验证方式
  • 咨询服务企业发展瓶颈期
  • 以前年度固定资产入账错误怎么办?
  • 原材料入库单运费要怎么计入?
  • 增值税应纳所得额是什么意思
  • 房地产不可销售的物业有哪些
  • 城建税税收减免政策
  • 国家税务总局公告2012年第57号
  • 代购本无罪,逃避关税须处罚
  • 统借统还的所得税政策
  • 员工误餐费的会计分录
  • 当期亏损需要提企业所得税吗财务报表
  • 附加税费减免性质代码
  • 税务更正申报需要哪些资料
  • 公司注销清算债权委托另一股东处理
  • 计提代扣代缴个税
  • 高新技术研发人员比例
  • mac如何修改图片像素大小
  • mac安装软件提示身份不明
  • PHP:pg_set_error_verbosity()的用法_PostgreSQL函数
  • html文档怎么写
  • php保留两位小数的函数
  • 买二手房避税
  • Laravel 5.5官方推荐的Nginx配置学习教程
  • php重定向伪造referer
  • 登录界面html5
  • 工程竣工决算会计账务处理
  • 一般纳税人补交印花税买卖合同
  • PHP魔术方法的作用
  • 帝国cms模板文件放在哪里
  • 3步搞定纯真ip数量
  • 知道实发工资怎么算应发工资计算器
  • 购货发票属于是什么凭证
  • sql server 2008数据库没有备份文件恢复
  • 对公账户办理的早晚,对公司有没有影响
  • 收到预付款发票但是货未到怎么办
  • 企业开办期间账务处理
  • 发票做账流程
  • 成本少了怎么处理
  • 国税代开专票缴纳城建税分录?
  • 核定征收也需要报税务报表吗?
  • 劳务外包账务
  • 流动比率多少合理
  • 管理费用业务招待费包括哪些
  • 大学里学分不满不让毕业是真的吗
  • linux的df命令是什么单词的缩写
  • spoolsv.exe是什么文件
  • 控制面板中的添加和删除在哪里
  • win7系统怎么查看
  • linux中添加用户和组的操作
  • centos6.5修改用户名
  • win8系统怎么搜索文件
  • GhostXP_SP3活力版V3.0_系统之家首发
  • netsurf.exe - netsurf是什么进程 有什么用
  • win builds
  • cocos2dx4.0教程
  • opengl es programming guide
  • python迭代器的作用
  • 深入解析java编译器:源码剖析与实例详解
  • XML、HTML、CSS与JS的区别整理
  • c#中的数组
  • jquery ui dialog替代confirm实例分析
  • python系统框架
  • 深入理解计算机系统
  • 网页全屏是哪个键
  • python多线程爬虫代码
  • a标签的href点击怎么不跳转
  • python django
  • 广西税务局123
  • 补税务登记证报税要钱吗
  • 2023年四川城乡居民养老保险多少钱
  • 河南省城市规划法
  • 预先支付货款
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设