Spring Boot: 约定优于配置的软件设计思想
文章目录
- 传统Spring框架的繁琐配置
- 1. **管理jar包依赖**
- 2. **维护web.xml**
- 3. **维护Dispatch-Servlet.xml配置项**
- 4. **应用部署到Web容器**
- 5. **第三方组件集成到Spring IOC容器中的配置项维护**
- Spring Boot的简化与自动化
- 1. Spring Boot Starter启动依赖
- 2. 自动装配机制
- 3. 默认加载的配置文件
- 约定优于配置的综合体现
在软件开发领域,有一种设计范式被广泛应用,那就是"约定优于配置"(Convention Over Configuration)。这个设计理念的核心思想是减少开发人员对于配置项的维护,使其能够更专注于业务逻辑的开发。Spring Boot是这一理念下的杰出产物,类似于Spring框架下的一个脚手架,为基于Spring生态的应用程序提供了快速开发的能力。
传统Spring框架的繁琐配置
在传统的Spring框架中,开发Web应用程序往往需要处理大量与业务逻辑无关的繁琐配置,这包括但不限于:
- 管理jar包依赖
- 维护web.xml
- 维护Dispatch-Servlet.xml配置项
- 配置DispatcherServlet及其相关的配置项
- 应用部署到Web容器
- 第三方组件集成到Spring IOC容器中的配置项维护
这些配置不仅使得项目结构变得复杂,而且增加了开发的复杂度和维护的难度。
在传统的Spring框架中,这些任务通常需要手动配置,但是Spring Boot通过其约定优于配置的设计理念,大大简化了这些任务,使得开发者不再需要手动处理绝大部分的配置。
1. 管理jar包依赖
在传统的Java项目中,你可能需要手动管理JAR包的依赖关系,但在Spring Boot中,你可以使用Maven或Gradle等构建工具来管理依赖。Spring Boot提供了一些称为"Starters"的依赖,它们是预配置的依赖集合,你只需要引入相关的Starter,Spring Boot就会自动配置所需的依赖项。
例如,如果你正在开发一个Spring Boot Web应用,只需在pom.xml
中添加以下依赖:
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
Spring Boot的Starters会自动管理所需的jar包版本,无需手动指定。
2. 维护web.xml
在传统的Java Web项目中,web.xml
文件通常用于配置Servlet、Filter、Listener等。在Spring Boot中,大部分的配置都被隐式处理,不再需要web.xml
。Spring Boot会自动注册DispatcherServlet,无需显式配置。如果需要定制一些Servlet或Filter,你可以使用ServletRegistrationBean
和FilterRegistrationBean
等类来进行配置。
3. 维护Dispatch-Servlet.xml配置项
在Spring Boot中,不再需要显式创建和维护Dispatch-Servlet.xml
配置文件。Spring Boot的配置通常是基于Java配置或者通过application.properties
或application.yml
文件实现的。例如,可以使用@Controller
注解替代<bean>
配置,而@RequestMapping
注解替代URL映射的配置。
4. 应用部署到Web容器
Spring Boot应用程序可以打包成可执行的JAR文件,其中包含了嵌入的Web服务器(如Tomcat、Jetty等)。这种方式使得部署变得极为简单,只需将JAR文件拷贝到服务器上并运行即可,无需额外配置外部的Web容器。
5. 第三方组件集成到Spring IOC容器中的配置项维护
在Spring Boot中,第三方组件的集成通常是通过Starters或自动配置来实现的。Spring Boot会自动扫描类路径,发现并自动配置需要的组件。如果需要对某些配置进行定制,可以使用@Configuration
和相关注解,或者通过application.properties
或application.yml
文件进行配置。
Spring Boot的简化与自动化
Spring Boot通过"约定优于配置"的理念,极大地简化了这些繁琐的配置,让开发者能够更专注于业务逻辑的实现。以下是Spring Boot如何体现这一理念的一些关键点:
1. Spring Boot Starter启动依赖
Spring Boot引入了Starter的概念,它能够帮助我们管理所有jar包的版本。如果我们的应用依赖于Spring MVC相关的jar包,Spring Boot会自动内置Tomcat容器来运行Web应用,无需开发者单独进行应用部署。
2. 自动装配机制
Spring Boot的自动装配机制通过扫描约定路径下的spring.factories
文件,识别配置类并实现Bean的自动装配。这大大减少了手动配置的需求,让开发者摆脱重复性的劳动。
3. 默认加载的配置文件
Spring Boot默认加载一些常用的配置文件,比如application.properties
等,使得开发者不必手动指定所有的配置项,降低了配置的负担。
约定优于配置的综合体现
总的来说,Spring Boot通过一系列的约定和默认配置,使得开发者能够更高效、更便捷地开发和维护应用程序。这种设计思想不仅提高了开发效率,也促使开发者遵循一些最佳实践,使得项目结构更加清晰,易于理解和维护。
"约定优于配置"不仅仅是Spring Boot的特色,更是一个常见的软件设计思想,旨在实现更高效、更便捷的软件系统的开发和维护。在使用Spring Boot的过程中,我们可以更专注于业务逻辑,而不必被繁琐的框架配置所困扰。
通过采用"约定优于配置"的理念,Spring Boot为开发者提供了一种更愉快的开发体验,让我们能够更专注于创造出更出色的应用程序。
这只是一个简单的示例,你可以根据实际情况扩展和修改。博客的结构可以根据需要进行调整,确保清晰地传达了"约定优于配置"在Spring Boot中的体现。
相关文章:
Spring Boot: 约定优于配置的软件设计思想
文章目录 传统Spring框架的繁琐配置1. **管理jar包依赖**2. **维护web.xml**3. **维护Dispatch-Servlet.xml配置项**4. **应用部署到Web容器**5. **第三方组件集成到Spring IOC容器中的配置项维护** Spring Boot的简化与自动化1. Spring Boot Starter启动依赖2. 自动装配机制3.…...

TCP触发海康扫码相机S52CN-IC-JQR-NNN25
PC环境设置 为保证客户端正常运行以及数据传输的稳定性,在使用客户端软件前,需要对 PC 环境 进行设置 关闭防火墙 操作步骤如下: 1. 打开系统防火墙。 2. 在自定义设置界面中,选择关闭防火墙的对应选项,并单击…...

ArcGIS:如何迭代Shp文件所有要素并分别导出为Shp文件?
01 前言 尝试用IDL实现,奈何又涉及新的类IDLffShape,觉得实在没有必要学习的必要,毕竟不是搞开发,只是做做数据处理,没必要拿IDL不擅长的且底层的东西自己造轮子。 这里想到使用Python去解决,gdal太久没用…...

[工业自动化-11]:西门子S7-15xxx编程 - PLC从站 - 分布式IO从站/从机
目录 一、什么是以分布式IO从站/从机 二、分布式IO从站的意义 三、ET200分布式从站系列 一、什么是以分布式IO从站/从机 在工业自动化领域中,分布式 IO 系统是目前应用最为广泛的一种 I/O 系统,其中分布式 IO 从站是一个重要的组成部分。 分布式 IO …...

Linux技能篇-yum源搭建(本地源和公网源)
文章目录 前言一、yum源是什么?二、使用镜像搭建本地yum源1.搭建临时仓库第一步:挂载系统ios镜像到虚拟机第二步:在操作系统中挂载镜像第三步:修改yum源配置文件 2.搭建本地仓库第一步:搭建临时yum源来安装httpd并做文…...

电脑清灰涂硅脂后电脑CPU温度不降反升
目录 一.问题描述二.问题解决三.拆机注意事项四.影响散热的主要因素说明1.通风差2.硅脂材料差3.硅脂涂抹方式错误 一.问题描述 电脑型号:暗影精灵5 测温工具:硬件狗狗(只要是测温软件都可以,比如omen hub和Core Temp…࿰…...

吴恩达《机器学习》8-1->8-2:非线性假设、神经元和大脑
一、非线性假设 在之前学到的线性回归和逻辑回归中,存在一个缺点,即当特征数量很多时,计算的负荷会变得非常大。考虑一个例子,假设我们使用 𝑥₁, 𝑥₂ 的多项式进行预测,这时我们可以很好地应…...
services.Jenkins Additional property tags is not allowed
今天需要给Jenkins server添加几个tag,于是就在docker的compose文件中添加了如下的tags, version: "3.9" services:jenkins:image: testbuild: context: services/jenkinsargs:- jenkins_version2.346.2- plugin_cli_version2.9.3volumes:- j…...

vColorPicker——基于 Vue 的颜色选择器插件
文章目录 前言样例特点 一、使用步骤?1. 安装2.引入3.在项目中使用 vcolorpicker 二、选项三、事件 前言 vColorPicker——官网 vColorPicker——GitHub 样例 vColorPicker是基于 Vue 的一款颜色选择器插件,仿照Angular的color-picker插件制作 特点 …...
Direct3D粒子系统
粒子和点精灵 粒子(是种微小的物体,在数学上通常用点来表示其模型。所以显示粒子时,使用点图元(由 D3 DPRIMITIVETYPE类型的D3 DPT POINTLIST枚举常量表示)是一个很好的选择。但是光栅化时,点图元将被映射为一个单个像素。这样就无法为我们提供很大的灵活性,因为实际应用…...

第24章_mysql性能分析工具的使用
文章目录 1. 数据库服务器的优化步骤2.查看系统性能参数3. 统计SQL的查询成本:last_query_cost4. 定位执行慢的 SQL:慢查询日志4.1 开启慢查询日志参数4.2 查看慢查询数目4.3 测试慢sql语句,查看慢日志4.4 系统变量 log_output, l…...
【Git】Merge/Rebase/Cherriy-Pick的区别
Git Merge/Rebase/Cherriy-Pick的区别 Git merge、Git Rebase、Git Cherry-pick是Git 常用的三个命令,可以用于分支合并、纳入提交等。 那么它们三个的区别以及共同点是什么? 了解这些可以帮我们更好理解Git的工作原理,进而学习它的一些设计思想。 git merge xxx-branch g…...
Python复习:序列(列表元组字符串)
Python复习 Python复习序列(列表元组字符串)列表定义列表增删改查列表的切片列表的一些常用操作符元组字符串 Python复习 序列(列表元组字符串) 列表元组字符串有一些同样的特点,所以放在一起复习。例如切片操作 列…...
DevChat助力成为软件开发的“钢铁侠”
一、背景介绍: 随着人工智能ChatGPT的发展,ChatGPT 的开放将推动人工智能在各个行业的应用,带来诸多的变革和提高,曾经一段时间也是担心对软件行业的影响,会不会以后就不需要这么多程序员了,实际上在当下&…...

c: struct sort descending and ascending in windows and Ubuntu
/*** file StudentStructSort.h* author geovindu,Geovin Du,涂聚文 (geovindu163.com)* ide: vscode c11,c17 Ubuntu 22.4* brief 结构体排序示例* date 2023-11-05* version 0.1* copyright geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants**/#ifnd…...

Python - 利用 OCR 技术提取视频台词、字幕
目录 一.引言 二.视频处理 1.视频样式 2.视频截取 ◆ 裁切降帧 ◆ 处理效果 3.视频分段 三.OCR 处理 1.视频帧处理 2.文本识别结果 3.后续工作与优化 ◆ 识别去重 ◆ 多线程提效 ◆ 片头片尾优化 四.总结 一.引言 视频经常会配套对应的台词或者字幕,…...

VUE页面导出PDF方案
1,技术方案为:html2canvas把页面生成canvas图片,再通过jspdf生成PDF文件; 2,安装依赖: npm i html2canvas -S npm i jspdf -S 3,封装导出pdf方法exportPdf.js: // 页面导出为pdf格式 //titl…...
机器学习笔记 - WGAN生成对抗网络概述和示例
一、简述 Wasserstein GAN或WGAN是一种生成对抗网络,它最小化地球移动器距离 (EM) 的近似值,而不是原始 GAN 公式中的 Jensen-Shannon 散度。与原始 GAN 相比,它的训练更加稳定,模式崩溃的证据更少,并且具有可用于调试和搜索超参数的有意义的曲线。 Wasserstein 生成对抗网…...
HoudiniVex笔记_P0_Houdini中文文档与翻译
1、19.0版本中文说明文档 链接:https://pan.baidu.com/s/1oJcX5pdnBZ_YWWwOSnFB5g?pwdz3tw 提取码:z3tw 2、翻译插件 有上网条件的同学可以试试这个翻译插件:双语网页翻译 - 电子书翻译 - PDF翻译 - 字幕文件翻译浏览器扩展 | 沉浸式翻译…...
基于PowerWord的储能在主动配电网中的仿真研究
摘要 主动配电网是智能配电网技术发展的高级阶段,分布式储能是主动配电网的重要组成部分,分布式储能的应用对主动配电网的规划、运行、网络拓扑、故障处理和保护、可再生能源电源的协调优化等方面带来不容忽视的影响,针对这一现状,…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...