SpringBoot(二)starter介绍

news2024/11/16 0:27:38

    做Java后端的同学可能都知道,在SpringBoot诞生之前,还有传统的Spring。这种Spring项目想要运行,需要导入各种依赖,而且还要在 XML 配置文件中一顿配置,非常痛苦。但通过上篇博客我们可以看到,SpringBoot项目创建完成后可以直接运行,这就是starter机制的功劳。

目录

一、什么是starter

二、约定优于配置

三、starter依赖树


一、什么是starter

    starter,顾名思义,是启动器的意思。SpringBoot将各种开发场景用到的依赖都抽取出来,做成一个个的starter,starter中整合了该场景下各种可能用到的依赖,但用户不需要引入多个依赖,只需要在maven中引入starter即可。

    举例来说,我们开发web应用,那么需要导入spring-boot-starter-web,而该starter中包含了开发web应用场景需要的所有的依赖(比如tomcat等)。而我们只需要导入这一个starter就可以了,根本不用关心其内部的构成。

    通俗来讲,要想打开家里的某个电器,只需要按下该电器的开关即可,根本不用关心开关是怎么一步步启动电器的。

    Spring官方提供了很多starter,当然也有很多第三方的starter。starter从名称上进行了如下规范:

  • Spring官方提供的starter命名规范:spring-boot-starter-xxx,例如spring-boot-starter-web
  • 第三方提供的starter命名规范:xxx-spring-boot-starter,例如mybatis-spring-boot-starter

二、约定优于配置

    相信很多同学都听过"约定优于配置"这个术语,引用百度百科对这个术语的解释:

约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。     

    这个术语在SpringBoot的starter可谓是完美的体现。SpringBoot的所有starter都遵循着默认配置,并且允许用户调整这些配置。也就是说,只要你导入了某个starter,即使你什么都不去配置,那么我默认都给你配置好了,你可以直接用。你如果不满意我的配置或者想手动修改,那么你可以自己去修改配置。

三、starter依赖树

    在上篇博客中,我们创建了第一个SpringBoot项目,并且在创建项目时,添加了Spring Web的依赖:

    相应的,pom.xml中生成了该依赖项,也就是上面我们举例的spring-boot-starter-web:

 

    接下来,我们通过如下命令看下该starter的依赖树:

mvn dependency:tree

    依赖树信息如下,可以看到,spring-boot-starter-web默认导入了例如logging、json、tomcat等诸多的依赖库,而我们并没有对这些依赖库进行引入和配置,而这些依赖项确实是我们在开发 Web应用时所需要的: 

    本篇介绍了什么是starter、starter的命名规则, 并且举例介绍了编程术语"约定优于配置"的含义。最后,通过mvn打印starter依赖树的方式验证了starter包含一切该场景依赖项这一特点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/697560.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

事务与隔离级别

事务四要素 原子性(Atomicity):要么全部完成,要么全部不完成;一致性(Consistency):一个事务单元需要提交之后才会被其他事务可见;隔离性(Isolation&#xff…

azure databricks因为notebook 日志打多或者打印图片太多,往下拉卡死怎么处理

1、同事碰到个问题,databricks 页面卡死不动了 2、我。。。。。。。。测试了下搞不定,找azure的工程师,特此笔记如下图 !](https://img-blog.csdnimg.cn/5db9756d0e224d15a9a607561b47591f.png)

怎样自定义starter模块和使用

一、 自定义Starter模块 在实际开发中,经常会定义一些公共组件,提供给各个项目团队使用。而在SpringBoot的项目中,一般会将这些公共组件封装为SpringBoot的starter(起步依赖)。 1.1实例–阿里云OSS的配置 前言:我们在使用阿里云…

windows下MySQL 5.7.31的安装

文章目录 安装步骤检查是否安装成功配置环境变量 安装步骤 双击安装包mysql-installer-community-5.7.31.0.msi选择自定义安装“custom”,点击next “Developer Default”是开发者默认“Server only”仅作为服务器安装“Clientonly”仅作为客户端安装“Full”是完…

华为OD机试真题 Python 实现【红黑图】【2023Q1 200分】,附详细解题思路

一、题目描述 众所周知红黑树是一种平衡树,它最突出的特性就是不能有两个相邻的红色节点。 那我们定义一个红黑图,也就是一张无向图中,每个节点可能有红黑两种颜色,但我们必须保证没有两个相邻的红色节点。 现在给出一张未染色的…

晶振的作用,高速晶振优缺点

前言 (1)我们都知道晶振是一款MCU的心脏,因为长期用这种抽象的概念进行解释,导致很多人不知道这个心脏的实际作用。因此,我在这里详细的介绍一下晶振对于MCU的实际作用。 (2)接下来我将会在MCU处…

一零六一、Jupyter notebook文件默认路径修改方法

1 .打开 Anaconda Prompt,输入命令 jupyter notebook --generate-config 根据上面运行处的路径打开 C:\Users\WW.jupyter\jupyter_notebook_config.py文件,可以使用记事本打开。 2 .直接CtrlF 搜索 ,找到 #c.NotebookApp.notebook_dir ‘’…

Spring 2023面试题(2)--Spring mvc 运行流程

1. Spring MVC的运行流程主要包括以下步骤: 用户发送请求到前端控制器(DispatcherServlet)。前端控制器接收到请求后,初始化处理器映射器(HandlerMapping)和处理器适配器(HandlerAdapter&#…

Crypto(小学期培训)

你被骗了 url编码直接解 进入网站、找到时间 flag{2020-01-01 07:43:23} 梅开二度 凯撒密码 y和h相差17 三羊开泰 词频分析 这是??? 010编辑器打开 上面是密文 下面是密码表64个,想到base64 找到原来的数值 与之对应&a…

JVM GC ROOT分析与垃圾收集器原理分析(三)

目录 一、GC ROOT 1、虚拟机栈中的本地变量 2、static 成员 3、常量引用 4、本地方法栈中的变量 5、类加载器 6、线程 二、回收算法 1、标记和清除 2、复制算法 3、标记整理 三、垃圾收集器 1、新生代-复制算法 2、老年代-标记清除/整理 3、垃圾收集器分类 1、…

Python如何向一个空列表中append列表

最近在做回溯组合问题时–力扣链接,遇到了向一个空列表中append多个列表。 于是,我原来的代码是: def main(n,k):result []temp []def backtrack(n,k,startIndex):if(len(temp)k):result.append(temp)returnfor i in range(startIndex,n1)…

group by rollup

group by rollup rollup与group by组合使用可对分组结果进行进一步的汇总(相当于对分组结果加一行小计)。 mysql : SELECT CASE WHEN GROUPING(姓名)1 THEN 总计 ELSE 姓名 END AS 姓名, SUM(数值1) 统计数值1, SUM(数值2) 统计数值2 FROM 表名 GROUP BY 姓名 WITH ROLLUPora…

SpringCloud微服务项目实战(一)---搭建SpringBoot项目

目录 SpringBoot与SpringCloud的关系环境配置开始搭建SpringBoot项目问题总结 SpringBoot与SpringCloud的关系 Spring Boot主内,能够快速搭建,快速开发单个微服务,搞定了数据层访问、RESTful 接口、日志组件、内置容器等等基础功能Spring Cl…

shardingsphere-proxy 实现mysql单库分表

1、docker安装mysql5.7版本 拉取mysql的镜像 docker pull mysql:5.7创建mysql的配置目录,日志目录,数据存储的目录 mkdir -p /home/sunyuhua/docker/mysql/conf mkdir -p /home/sunyuhua/docker/mysql/logs mkdir -p /home/sunyuhua/docker/mysql/dat…

微信小游戏:超大数值计算

测试代码: import {large_number} from "./large_number";const {ccclass, property} cc._decorator;ccclass export default class NewClass extends cc.Component {property(cc.Label)label: cc.Label null;propertytext: string hello;// LIFE-CYCL…

操作符重载的概念

下面的复数解决方案是否可行? Add 函数可以解决 Complex 对象相加的问题,但是 Complex 是现实世界中确实存在的复数,并且复数在数学中的地位和普通的实数相同 为什么不能让 操作符也支持复数相加呢? 操作符重载 C 中的重载能够…

四、OkHttp_连接池

预备知识 通常我们进行HTTP连接网络的时候我们会进行TCP的三次握手,然后传输数据,然后再释放连接。 大量的连接每次连接关闭都要三次握手四次分手的很显然会造成性能低下, 因此http有一种叫做keep-alive connections的机制(HTTP1…

【每日一题】Leetcode - 10. 正则表达式匹配

题目 Leetcode - 10. 正则表达式匹配 解题思路 预处理正则表达式,合并同项,比如: "a * b * c * . * " -> " . * "更加预处理后的正则表达式,构建NFA通过NFA状态转移条件一个一个匹配字符串字符不匹配的状态要回退匹…

【统一安全管控平台】4A解析

文章目录 一、统一帐号(Account)二、统一认证(Authentication)三、统一授权(Authorization)四、统一审计(Audit)参考&感谢 4A是指帐号(Account)、认证(Authentication)、授权(Authorization…

mysql8.0新特性详解

一、my.ini或my.cnf的全局参数 一个连接最少占用内存是256K,最大是64M,如果一个连接的请求数据超过64MB(比如排序),就会申请临时空间,放到硬盘上。 #最大连接数 max_connections3000 #最大用户连接数 max_…