(SpringBoot)第五章:SpringBoot创建和使用
文章目录
- 一:Spring和SpringBoot
- (1)Spring已解决和未解决的问题
- (2)SpringBoot
- 二:Spring项目的创建
- (1)IDEA创建
- (2)网页端创建
- 三:项目目录介绍及运行
- (1)项目目录介绍
- (2)Hello World
- (3)约定大于配置
一:Spring和SpringBoot
(1)Spring已解决和未解决的问题
Spring已解决问题:Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能
- 使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑
- 可以提供众多服务,事务管理,WS等
- AOP的很好支持,方便面向切面编程
- 对主流的框架提供了很好的集成支持,如Hibernate,Struts2,JPA
- Spring DI机制降低了业务对象替换的复杂性
- Spring属于低侵入,代码污染极低
- Spring的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或全部
Spring未解决问题:虽然Spring的组件代码是轻量级的,但它的配置却是重量级的
- 一开始,Spring用XML配置,而且是很多XML配置
- Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置
- Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML
但是
- 所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间
- 除此之外,项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进
(2)SpringBoot
SpringBoot:是一个用于构建独立的、生产级别的基于 Spring 框架的应用程序的开源框架。它是 Spring 生态系统的一部分,旨在简化 Spring 应用程序的开发和部署过程。Spring Boot 提供了一种快速、无配置的方式来创建 Spring 应用程序,减少了繁琐的配置和样板代码,使开发者能够更专注于应用程序的业务逻辑。其特点如下
- 简化配置:Spring Boot 自动配置了许多常见的应用程序组件,如数据源、Web 服务器、安全等,减少了手动配置的需要
- 内嵌式容器:Spring Boot 支持内嵌式的容器,如Tomcat、Jetty和Undertow,使应用程序可以作为独立的可执行 JAR 文件或 WAR 文件运行,无需外部的 Web 服务器
- 开箱即用:Spring Boot 提供了许多预定义的 Starter 依赖,可以轻松集成各种技术和框架,如Spring Data、Spring Security、Thymeleaf、JPA、MongoDB、Redis等
- 自动配置:Spring Boot 根据应用程序的依赖和配置自动配置 Spring 框架,减少了手动配置的工作
- 嵌入式数据库支持:Spring Boot 支持内嵌式数据库,如H2、HSQLDB、Derby等,方便开发和测试
- 生产就绪:Spring Boot 提供了监控、度量、健康检查等功能,使应用程序容易部署和管理
- 外部化配置:Spring Boot 支持将配置参数外部化,可以使用属性文件、YAML 文件、环境变量等方式来配置应用程序,便于不同环境的部署
- 微服务支持:Spring Boot 可以与 Spring Cloud 结合使用,构建微服务架构,实现服务发现、负载均衡、断路器等功能
总而言之,SpringBoot最核心的就是以下三点
- 快速添加依赖
- 内置Web容器
- 自动装配
二:Spring项目的创建
(1)IDEA创建
- 注意:社区版无此选项
- 2022.12官方发布SpringBoot3,基于Spring6,要求最低JDK版本17
新建project,选择Spring Initializr
填写信息如下
选择版本,和依赖
创建完毕
运行
(2)网页端创建
- Spring Initializr
点击⽣成按钮会下载⼀个 Spring Boot 的 zip 包,解压后,用IDEA打开
三:项目目录介绍及运行
(1)项目目录介绍
Spring项目结构如下
其中.mvn
、HELP.md
、mvnw
、mvnw.cmd
这个四个文件(文件夹)没有什么作用,可删除
SpringBoot项目的启动类默认名字叫做DemoApplication
,右键运行即可
(2)Hello World
我们学习Java EE目的就是要实现Web项目或接口的,之前的SpringFrameWork只不过是一个普通的Java项目,无法直接和浏览器交互。因此,现在我们需要使用SpringBoot来实现交互
创建一个UserController
文件,然后添加注解
@RestController
=@Controller
+@ResponseBody
package com.example.springfirstdemo_2023_11_09; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; @Controller // 当前类为控制器
@ResponseBody // 返回的是数据而非页面
public class TestController { @RequestMapping("/hi") // 路由注册 public String sayHello(String name) { return "Hello"; }
}
(3)约定大于配置
约定大于配置:是 Spring Boot 框架的设计理念之一,它强调通过一系列的默认约定来减少配置的工作,从而简化开发过程。这一理念的目标是提高开发者的生产力,使得开发过程更加快速和简便。比如在Spring中是需要配置扫描路径的,而SpringBoot则不需要
相关文章:

(SpringBoot)第五章:SpringBoot创建和使用
文章目录 一:Spring和SpringBoot(1)Spring已解决和未解决的问题(2)SpringBoot 二:Spring项目的创建(1)IDEA创建(2)网页端创建 三:项目目录介绍及运…...

Linux重定向
文章目录 1. 文件描述符分配规则2. 重定向接口dup2自定义shell重定向(补充) 3. 标准输出和标准错误4. 如何理解一切接文件 本章代码gitee地址:文件重定向 1. 文件描述符分配规则 文件描述符的分配规则是从0下标开始,寻址最小的没有使用的数组位置&#…...

Python之文件与文件夹操作及 pytest 测试习题
目录 1、文本文件读写基础。编写程序,在 当前目录下创建一个文本文件 test.txt,并向其中写入字符串 hello world。2、编写一个程序 demo.py,要求运行该程序后,生成 demo_new.py 文件,其中内容与demo.py 一样࿰…...
物联网:实现数据驱动决策,推动经济发展
开发物联网系统的意义主要体现在以下几个方面: 连接一切:物联网的目标是连接一切,将生活中的各种物理对象互联起来。通过物联网开发,我们可以实现各类设备的智能化,包括家居设备、交通工具、工业设备等。这将为人们提…...
Leetcode 2929. Distribute Candies Among Children II
Leetcode 2929. Distribute Candies Among Children II 1. 解题思路2. 代码实现 题目链接:2929. Distribute Candies Among Children II 1. 解题思路 这一题很惭愧,没能自力搞定,最后是看了大佬的思路之后才做出来的,唉…… 这…...
【面经】ES中分片是什么?副本是什么?
ES分片 分片是将一个索引切分为多个底层物理的Lucene索引,这些被切分出来的每个部分称为一个分片。 每个分片都是一个全功能且独立的索引,可由集群中的任何主机存储。 在创建索引时,用户可以指定其分片的数量。 默认情况下,每个索…...

【算法练习Day46】判断子序列不同的子序列
📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 判断子序列不同的子序列总结…...
Java设计模式之访问者模式
目录 定义 结构 案例 优点 缺点 使用场景 扩展 分派 案例实现须知 动态分派 静态分派 双分派 定义 封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。 结构 访问者模式包含以下主要角色…...

PySide/PYQT如何用Qt Designer和代码来设置文字属性,如何设置文字颜色?
文章目录 📖 介绍 📖🏡 环境 🏡📒 实现方法 📒📝 Qt Designer设置📝 代码📖 介绍 📖 本人介绍如何使用Qt Designer/代码来设置字体属性(包含字体颜色) 🏡 环境 🏡 本文使用Pyside6来进行演示📒 实现方法 📒 📝 Qt Designer设置 首先打开Qt De…...
ubuntu 设置最大带宽
背景 近日做实验,需要限制一些机子的带宽以达到模拟的效果。在网上搜索了一阵子,结合自己实操的经验,潦草写下这篇文章,供自己与有需要的人参考。 环境: Ubuntu 22.04.1 LTS 安装 wondershaper 和 speedtest-cli w…...

如何在 Python 中执行 MySQL 结果限制和分页查询
Python MySQL 限制结果 限制结果数量 示例 1: 获取您自己的 Python 服务器 选择 “customers” 表中的前 5 条记录: import mysql.connectormydb mysql.connector.connect(host"localhost",user"您的用户名",password"您的密码"…...

Django配置文件,request,链接mysql方法,Orm简介
三板斧问题(views.py) HttpResponse # 返回的是字符串render # 渲染一个HTML静态文件,模板文件redirect # 重定向的 在视图文件中得视图函数必须要接收一个形参request,并且,视图函数也要有返回值ÿ…...
ubuntu下载各个版本chrome方法
Ubuntu/debian 在这里面找版本 https://unix.stackexchange.com/a/612981然后添充进去 http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_[HERE_THE_FULL_VERSION]_amd64.deb比如:https://dl.google.com/linux/chro…...

Http状态码502常见原因及排错思路(实战)
Http状态码502常见原因及排错思路 502表示Bad Gateway。当Nginx返回502错误时,通常表示Nginx作为代理服务器无法从上游服务器(如:我们的后端服务器地址)获取有效的响应。导致这种情况的原因有很多: 后端服务器故障ngin…...

国际阿里云:无法ping通ECS实例公网IP的排查方法!!!
无法ping通ECS实例的原因较多,您可以参考本文进行排查。 问题现象 本地客户端无法ping通目标ECS实例公网IP,例如: 本地客户端为Linux系统,ping目标ECS实例公网IP时无响应,如下所示: 本地客户端为Windo…...

Nginx缓存基础
1 nginx缓存的流程 客户端需要访问服务器的数据时,如果都直接向服务器发送请求,服务器接收过多的请求,压力会比较大,也比较耗时;而如果在nginx缓存一定的数据,使客户端向基于nginx的代理服务器发送请求&…...

【数据结构】Lambda
⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈数据结构 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 Lambda表达式 1. 背景1.1 语法1.2 函…...
力扣labuladong——一刷day28
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣380. O(1) 时间插入、删除和获取随机元素二、力扣710. 黑名单中的随机数 前言 常数时间删除-查找数组中的任意元素,且随机访问概率一致 如果…...

2023年CCF非专业级别软件能力认证第二轮 (CSP-S)提高级C++语言试题
2023年CCF非专业级别软件能力认证第二轮 (CSP-S)提高级C语言试题 编程题第 1 题 问答题 密码锁(lock) 题目描述 小Y有一把五个拨圈的密码锁。如图所示,每个拨圈上是从0到9的数字。每个拨圈都是从0到9的循环…...

华为ensp:静态默认路由
静态路由 到r2 上的系统视图模式 下一跳为1.1.1.2 ip route-static 192.168.2.0 255.255.255.0 1.1.1.2 如果找2网段下一跳为1.1.1.2接口 默认路由 到r3上做的是默认路由 ip route-static 0.0.0.0 0 1.1.1.1 所有的流量去找1.1.1.1 查看效果 只要做完完整的路由就可…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
CppCon 2015 学习:REFLECTION TECHNIQUES IN C++
关于 Reflection(反射) 这个概念,总结一下: Reflection(反射)是什么? 反射是对类型的自我检查能力(Introspection) 可以查看类的成员变量、成员函数等信息。反射允许枚…...

C++中vector类型的介绍和使用
文章目录 一、vector 类型的简介1.1 基本介绍1.2 常见用法示例1.3 常见成员函数简表 二、vector 数据的插入2.1 push_back() —— 在尾部插入一个元素2.2 emplace_back() —— 在尾部“就地”构造对象2.3 insert() —— 在任意位置插入一个或多个元素2.4 emplace() —— 在任意…...
统计学(第8版)——统计抽样学习笔记(考试用)
一、统计抽样的核心内容与问题 研究内容 从总体中科学抽取样本的方法利用样本数据推断总体特征(均值、比率、总量)控制抽样误差与非抽样误差 解决的核心问题 在成本约束下,用少量样本准确推断总体特征量化估计结果的可靠性(置…...