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

  • 钉钉安心工资条在哪里进入(钉钉安心工资条怎么提现)

    钉钉安心工资条在哪里进入(钉钉安心工资条怎么提现)

  • qq提示音怎么改(qq提示音怎么改为主题音)

    qq提示音怎么改(qq提示音怎么改为主题音)

  • 苹果耳机一边坏了怎么修(苹果耳机一边坏了,可以买一个配对吗)

    苹果耳机一边坏了怎么修(苹果耳机一边坏了,可以买一个配对吗)

  • 苹果手机灰色的图标怎么出来(苹果手机灰色的图标悬浮)

    苹果手机灰色的图标怎么出来(苹果手机灰色的图标悬浮)

  • 硒鼓是墨盒吗(硒鼓是什么)

    硒鼓是墨盒吗(硒鼓是什么)

  • 打印机夹纸怎么取出(打印机夹纸怎么取出图解)

    打印机夹纸怎么取出(打印机夹纸怎么取出图解)

  • psd啥意思(psd是什么的缩写)

    psd啥意思(psd是什么的缩写)

  • 苹果nn开头是什么版本(苹果机n开头)

    苹果nn开头是什么版本(苹果机n开头)

  • 手机发烫会对手机造成什么影响(手机发烫对手机有影响吗)

    手机发烫会对手机造成什么影响(手机发烫对手机有影响吗)

  • 升级手机系统有什么影响(升级手机系统有什么用)

    升级手机系统有什么影响(升级手机系统有什么用)

  • 显示器可以连接手机吗(显示器可以连接显示器吗)

    显示器可以连接手机吗(显示器可以连接显示器吗)

  • 手机充电一定要充满才能拔吗(手机充电一定要100%吗)

    手机充电一定要充满才能拔吗(手机充电一定要100%吗)

  • 华为p30pro带不带反向充电(华为p30pro带不带耳机)

    华为p30pro带不带反向充电(华为p30pro带不带耳机)

  • 苹果换屏还有面容吗(苹果换屏面容还能用吗)

    苹果换屏还有面容吗(苹果换屏面容还能用吗)

  • 快手个人主页的联系电话怎么设置(快手个人主页的背景怎么设置)

    快手个人主页的联系电话怎么设置(快手个人主页的背景怎么设置)

  • 键盘上的end键在哪里(键盘的end键在哪里)

    键盘上的end键在哪里(键盘的end键在哪里)

  • 多模光口模块与单模的区别(多模光口能用单模光纤吗)

    多模光口模块与单模的区别(多模光口能用单模光纤吗)

  • 如何更换手机号码(如何更换手机号和预留名字)

    如何更换手机号码(如何更换手机号和预留名字)

  • 手机设备清空是什么意思(手机设备清空会怎么样)

    手机设备清空是什么意思(手机设备清空会怎么样)

  • 方舟编译器怎么用(方舟编译器怎么安装)

    方舟编译器怎么用(方舟编译器怎么安装)

  • xsmax支持多少w快充(xs max支持多少w)

    xsmax支持多少w快充(xs max支持多少w)

  • 顺序存储结构有哪些(顺序存储结构有指针域吗为什么)

    顺序存储结构有哪些(顺序存储结构有指针域吗为什么)

  • linux强制删除文件教程(linux强制删除文件夹)

    linux强制删除文件教程(linux强制删除文件夹)

  • 微pe工具箱怎么安装win10系统?微pe工具箱安装win10系统详细教程(微pe工具箱怎么用)

    微pe工具箱怎么安装win10系统?微pe工具箱安装win10系统详细教程(微pe工具箱怎么用)

  • 建筑公司收到预付款怎么开票
  • 一般纳税人开劳务发票几个点
  • 甲供材入账
  • 增值税发票认证平台
  • 业务活动表本月数和本年累计数
  • 企业收购资金计算公式
  • 资本公积账务处理案例
  • 某公司是一家刚成立的大型化妆品生产企业
  • 应收分保合同准备材料
  • 公司每月利润明细表
  • 长期股权投资顺流交易固定资产
  • 转账支票必须对着开发票单位吗?
  • 企业所得税成本确认原则
  • 开增值税票需要对方什么资料
  • 购车合同起什么作用
  • 土地作价入股土地如何过户
  • 1697509029
  • 建设单位对工程施工的评价意见
  • 计提社保公司承担部分怎么算
  • win10虚拟机安装win7
  • 华为mate手机sim卡怎么插
  • mac苹果系统怎么用
  • centos只有lo
  • 期房怎么交易流程
  • dm分区工具图解教程
  • 最早在哪一年手机可以上网
  • 代扣手续费是啥意思
  • 机关事业单位体检费用标准规定
  • php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
  • 会计账目和账户的区别
  • 计算机视觉项目队友只让你打标签是什么意思
  • 总结js中常用的字符
  • sftp 加密算法
  • 企业应采用
  • 企业合并财务报表项目有哪些
  • 金税服务费必须交吗
  • python中socket怎么用
  • 增值税季度缴纳时间
  • 税控盘每年要交年费吗
  • sql row_number()over()
  • mysql创建存储过程sql语句
  • 固定资产直接记入费用科目
  • 公司的零星开支怎么做账
  • 房产税城镇土地使用税申报期限
  • 购买软件使用费计入什么科目
  • 房产税和土地使用税什么时候申报
  • 保教费免征增值税政策
  • 应收账款的会计要素
  • 公司开发的app费用怎么算
  • 预收账款的借方余额反映的是
  • 存货损失营业外支出
  • 旅游业开具的是什么证明
  • 换工作后个税app单位会自动更改吗
  • win9什么时候发布的
  • windows2000自动登陆
  • ubuntu怎么切换桌面
  • win8怎么取消自动关机
  • ubuntu的root
  • 中文版windows7的安装方式
  • linux安装flash插件
  • win8怎么调整显示器亮度
  • scureapp.exe - scureapp是什么进程 有什么用
  • win7桌面显示电脑图标
  • win7 esd安装文件怎么安装教程
  • linux卡屏
  • javascript标准
  • css截图
  • nodejs webp
  • windows pytorch
  • 安卓apk混淆工具
  • nodejs cgi
  • unity3d功能
  • zabbix 微信
  • jQuery基本选择器总结
  • 期间费用如何分摊到成本中
  • 机构改革哪个单位负责
  • 金米财税口碑如何?
  • 小孩一卡通丢了去哪里补办,需要什么证件
  • 计生法废止
  • 大连开发区哪家自助餐好吃还便宜
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设