SpringBoot优缺点分析

2023-11-01

Spring的优点分析

Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。

Spring的缺点分析

虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。

所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间。和所有框架一样,Spring实用,但与此同时它要求的回报也不少。

除此之外,项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。

SpringBoot的概述

SpringBoot解决上述Spring的缺点

SpringBoot对上述Spring的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。

SpringBoot的特点

- 为基于Spring的开发提供更快的入门体验
- 开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求
- 提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等
- SpringBoot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式

SpringBoot的核心功能

- 起步依赖

  起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。

  简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。

- 自动配置

  Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是Spring自动完成的。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot优缺点分析 的相关文章

  • 在 String 值之后打印 int 值

    我有以下示例代码 int pay 80 int bonus 65 System out println pay bonus bonus pay 有人可以向我解释一下为什么我得到以下输出 145 6580 您的代码正在从左到右解释表达式 pa
  • Java 小程序在 Mac 上闪烁

    这个问题很奇怪 问题并非在每个平台上都会发生 我在使用 MacOSX 的 Google Chrome 中出现了这种情况 但在 Safari 中却没有出现这种情况 对于使用 Windows 的朋友来说 在 Google Chrome 上运行得
  • 如何准确判断 double 是否为整数? [复制]

    这个问题在这里已经有答案了 具体来说 在 Java 中 我如何确定double是一个整数 为了澄清 我想知道如何确定 double 实际上不包含任何分数或小数 我主要关心的是浮点数的性质 我想到的方法 以及我通过谷歌找到的方法 基本上遵循以
  • 为什么通过 方法向 List 添加元素(类型正确)会出现编译错误? [复制]

    这个问题在这里已经有答案了 我对泛型通配符概念几乎没有疑问 1 假设我有一个方法 void write List
  • Selenium 和 TestNG 同时使用“dependsOn”和“priority =”问题

    我正在努力在 GUI 自动化测试中实现更好的工作流程控制 我首先从dependsOn开始 但很快发现缺点是如果一个测试失败 则套件的整个其余部分都不会运行 所以我改用 priority 但看到了意外的行为 一个例子 Test priorit
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • 使用 Jena 查询维基数据

    目前 Wikidata 有一个 SPARQL 端点 https query wikidata org https query wikidata org 我想使用 Jena 3 0 1 查询此网站 我使用以下代码 但收到错误消息 端点返回的
  • 对对象集合进行排序[重复]

    这个问题在这里已经有答案了 如果我有一个简单的字符串列表 List
  • 在拇指上方显示修改后的 JSlider 值

    有没有一种简单的方法可以在使用某些 外观和感觉 的同时更改 JSlider 上方标签中显示的值 为了清楚起见 我正在谈论这个值 具体来说 我想显示除以 1000 的值而不是值本身 我知道如果我显示它们 我可以为刻度设置标签 但用户将不得不猜
  • Java 中如何验证字符串的格式是否正确

    我目前正在用 Java 编写一个验证方法来检查字符串是否是要更改为日期的几种不同格式之一 我希望它接受的格式如下 MM DD YY M DD YY MM D YY 和 M D YY 我正在测试第一种格式 每次它都告诉我它无效 即使我输入了有
  • 如何在 Eclipse 中获得完全限定的类名?

    有没有一种快速方法可以在 Eclipse 中单击 Java 类并获取其完全限定名称 或将其复制到剪贴板 2016年6月29日编辑 正如 Jeff 所指出的 您只需要执行以下第二步 1 Double click on the class na
  • 如何让“循环”泛型在 Java 中工作?

    我在编译以下涉及一些泛型的代码时遇到错误 public abstract class State
  • ActiveMQ JNDI 查找问题

    尝试使用 JNDI 运行以下 ActiveMQ http activemq apache org jndi support html http ActiveMQ 20JNDI 并且我的 jboss server node lib 文件夹中有
  • 使用 Guava Ordering 对对象列表进行多条件排序

    我有一个类无法实现可比较 但需要根据 2 个字段进行排序 我怎样才能用番石榴实现这一目标 假设班级是 class X String stringValue java util Date dateValue 我有一个清单 List
  • Hibernate 标准接受 %% 值

    我正在使用下面的 Hibernate 代码来过滤workFlowName crt add Restrictions like workFlowName workFlow MatchMode ANYWHERE crt is the crite
  • 开发者环境-如何调用/消费其他微服务

    背景 我的环境 Java Play2 MySql 我在 Play2 gt S1 S2 S3 上编写了 3 个无状态 Restful 微服务 S1 消耗来自 S2 和 S3 的数据 因此 当用户点击 S1 时 该服务会异步调用 S2 S3 合
  • 如何在 Spring Mvc 项目中设置上下文根

    我在 Tomcat 服务器中使用 Spring MVC 项目 每次运行应用程序时 服务器上下文根都会更改 如何设置固定上下文根 我的项目名称是 DemoApplication 首先部署此上下文根 路径是 http localhost 808
  • 如何使用eclipse调试JSP tomcat服务?

    我想使用 Eclipse IDE 调试器来调试单独运行的 JSP Struts Tomcat Hibernate 应用程序堆栈 如何设置 java JVM 和 eclipse 以便设置断点 监视变量值并查看当前正在执行的代码 我刚刚用谷歌搜
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset
  • Android ClassNotFoundException:在路径上找不到类

    10 22 15 29 40 897 E AndroidRuntime 2561 FATAL EXCEPTION main 10 22 15 29 40 897 E AndroidRuntime 2561 java lang Runtime

随机推荐

  • 数据集重命名排序报错问题(FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件)

    问题描述 Traceback most recent call last File E Tool code rename py line 72 in
  • Linux学习笔记--一些错误的记录

    运行linux的时候 输入shutdown r now命令提示 bash shutdown is not found 出现这个错误是因为这条命令没有加入到系统的配置文件中 运行命令export PATH PATH sbin即可解决 转载于
  • VC10中的C++0x特性 Part 2 (3):右值引用

    VC10中的C 0x特性 Part 2 3 右值引用 来源 vcblog 作者 Stephan T Lavavej 翻译 飘飘白云 转载时请注明作者和出处 未经许可 请勿用于商业用途 简介 这一系列文章介绍Microsoft Visual
  • 虚拟内存、虚拟地址空间和物理地址空间(内存管理)

    文章目录 前言 一 虚拟地址和物理地址 二 虚拟内存 三 为什么引入虚拟内存 前言 虚拟内存 虚拟地址空间和物理地址空间 一 虚拟地址和物理地址 地址空间是一个非负整数地址的有序集合 在一个带虚拟内存的系统中 CPU从一个有N pow 2
  • vue3使用ElementPlus的消息el-message样式不生效或者被遮盖(z-index)

    问题1 el message自定义样式不生效 想改弹出框的位置时不生效 使用了el message的自定义类的custom class属性也不行 原因应该是加了scoped后使用到里面样式的dom会添加data v xxxx这种属性防止cs
  • spring JDBCTemplate 批量插入 返回id 批量插入返回批量id

    http www iteye com topic 1135650 1 插入一条记录返回刚插入记录的id Java代码 public int addBean final Bean b final String strSql insert in
  • 红黑树和AVL树的比较分析

    定义 AVL树全称是平衡二叉搜索树 相比于红黑树 他是一种高度平衡的二叉搜索树 所有节点的左右子树高度差不超过1 红黑树是一种弱平衡的二叉搜索树 它只要求部分达到平衡 其保证最长路径最多是最短路径的2倍 增删查比较 插入 就插入节点导致树失
  • 团队管理和协作,Markdown,原型的使用

    背景 公司的技术文档和接口都需要多人合作编写 博客只能是个人的技术总结 无法有效的团队管理 最终 技术文档 接口 数据字典 查看Demo web页面原型 app原型 在线作图 流程图 思维导图 原型图 UML 网络拓扑图 组织结构图
  • 【信息】宁波银行金融科技部:常见问题解答

    0 内推 我的内推码 90OF50 宁波银行金融科技部2023届校招开始了 内推码 90OF50 社招请直接与我联系哦 1 说明 本文是对很多朋友都关心的一些问题的集中解答 以免大家重复地询问一样的问题 大家自取自己关注的内容即可 顺序可能
  • Android Studio制作简单计算器

    代码地址 https github com xjhqre android calculator 效果演示 1 连续加法 2 连续减法 3 连续乘法 4 连续除法 5 优先级运算 6 退格功能 7 错误提示 制作步骤 1 创建按钮图片 1 1
  • bat小游戏代码大全_Python俄罗斯方块游戏代码

    本游戏共两个文件 blocks py和main py blocks py定义各类方块 main py定义游戏画面 blocks py import randomfrom collections import namedtuplePoint
  • CSS导航栏及下拉菜单

    导航栏对于一个网站来说非常重要 熟练地使用CSS可以转换成好看的导航栏而不是枯燥的HTML菜单 导航栏基本上是一个链接列表 所以使用 ul ul 和 li li 元素非常有意义 导航栏就是建立在列表标签的精确熟练使用上 小复习 伪类的使用方
  • SQL的开窗函数

    引用 在开窗函数出现之前存在着非常多用 SQL 语句非常难解决的问题 非常多都要通过复杂的相关子查询或者存储过程来完毕 为了解决这些问题 在2003年ISO SQL标准增加了开窗函数 开窗函数的使用使得这些经典的难题能够被轻松的解决 眼下在
  • 怎么查看端口号被哪个程序占用从而解决端口冲突

    在java后台开发过程中我们可能都会遇到端口被占用的问题 但是此时又不知道端口被哪个端口占用 用下面方法可以查看端口是被哪个程序占用 然后结束这个程序就可以解决端口被占用的问题 1 按windows R键 输入cmd命令 回车 2 输入ne
  • 【微信小程序开发】一文带你详解小程序组件和 API 的使用

    引言 在小程序开发中 组件和API是非常重要的部分 它们可以帮助我们构建丰富的用户界面和实现各种功能 本文将介绍小程序中常用的组件和API 并提供相应的代码示例 文章目录 引言 组件 文本组件 图片组件 按钮组件 输入框组件 列表组件 AP
  • 三大移动Web开发框架哪个适合你?

    我最近特别关注JavaScript驱动的移动应用开发解决方案 先后撰文介绍了众多的相关话题 包括jQuery Mobile jQTouch Sencha Touch和PhoneGap 我得承认 要搞清楚这一批前沿技术并非易事 于是我这回概述
  • java远程调试_Java 远程调试原理(学习笔记)

    Java远程调试的原理 JDWP Java Debug Wire Protocol 两个VM之间通过debug协议进行通信 然后以达到远程调试的目的 两者之间可以通过socket进行通信 其中 调试的程序常常被称为debugger 而被调试
  • postgis中将数据库备份到其它数据库中还原

    1 备份数据库 可以用命令操作 pg dump U postgres h hostip d joint boot Fc gt D python Project PG data joint jar 2 创建新的数据库 可以在其它postgis
  • vCard和MECARD格式

    vcard和MECARD都是电子名片的格式 这几篇文章介绍都很详细 MECARD格式的电子名片简单介绍 链接1 链接2 vCard格式 链接 分割线 补充一个只有微信扫码时会出现的问题 不管是vCard还是MECARD 也不管vCard是2
  • SpringBoot优缺点分析

    Spring的优点分析 Spring是Java企业版 Java Enterprise Edition JEE 也称J2EE 的轻量级代替品 无需开发重量级的Enterprise JavaBean EJB Spring为企业级Java开发提供