【Spring 框架】初识 Spring
文章目录
- 前言
- 1. 什么是 Spring
- 2. 什么是 Maven
- 3. 第一个 SpringBoot 项目
- 4. 项目讲解
- 结语
前言
在前面我们一起学习了 JavaSE 的基础知识,随着学习的深入,我们也将逐步介绍 JavaEE 的内容,像 Spring 框架,Mybatis 等等。在本篇博客中,我将会简单介绍 Spring 和 Maven ,并创建一个基于 Spring Boot 框架的十分简单的 Web 应用程序
1. 什么是 Spring
官方网站 —— Spring | Home
Spring:Spring 是一个轻量级的 Java 开源框架,核心思想是控制反转(IoC)和面向切面编程(AOP)
在广义上,Spring 指的是 Spring 全家桶,即一个生态体系,它包含了很多模块,如 Spring Framework、Spring Boot、Spring MVC 等,它能整合开源世界众多的第三方框架和类库,因此逐渐成为了使用最多的 Java EE 企业应用开源框架
在狭义上,Spring 又可以单指 Spring Framework 框架,因为 Spring Framework 是 Spring 生态系统的核心,控制反转和面向切面编程的核心思想就是由 Spring Framework 提供的
(在后面的学习中,我们说的 Spring 指的就是 Spring Framework)
Spring Boot:
Spring Boot 是 Spring 生态系统中的一个模块,是一个为快速开发 Spring 应用程序而设计的框架。它通过提供一系列预配置的模板和默认设置,可以极大地简化了基于 Spring 的应用程序的配置和部署过程。简单来说, Spring Boot 是对 Spring 的进一步简化和封装~
2. 什么是 Maven
在上面我们提到了 —— “ Spring Boot 可以简化了基于 Spring 的应用程序的配置和部署过程 ”,而这其中,Maven 就发挥了巨大的作用
Maven 的概念:
Maven 是一个项目管理和构建自动化工具,它使用一个名为 pom.xml
的文件来管理项目的构建、依赖、报告和文档。Maven 通过定义项目对象模型(Project Object Model, POM)来描述项目构建和依赖管理
在之前的博客 【MySQL】使用 JDBC 连接数据库 中,我们需要将 jar 包导入到项目中才能使用其中的 API,但是现在有了 pom.xml
的文件后,我们只需要把依赖加进去,就可以直接使用了
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version>
</dependency>
- <dependency>:这是 Maven 依赖配置的开始标签。
- <groupId>:定义了依赖项所属的组或组织。在这个例子中,
mysql
是组 ID,表示这个依赖项是由 MySQL 提供的。 - <artifactId>:定义了具体的依赖项名称。在这个例子中,
mysql-connector-java
是 MySQL JDBC 驱动的 artifact ID。 - <version>:指定了依赖项的版本。在这个例子中,
8.0.33
是 MySQL JDBC 驱动的版本号。 - </dependency>:这是 Maven 依赖配置结束的标签
3. 第一个 SpringBoot 项目
此处我使用的是 idea 2023.3.2 专业版
第一步:创建 SpringBoot 项目,名字和路径任意
第二步:选择 Spring Web 依赖,这样就不用我们自己手动添加了(此处 SpringBoot 的版本可能会不同,任选一个就好),点击创建
(创建完后可能会加载很久,是正常现象,慢慢等就行)
介绍目录:
我们可以把这些暂时用不到的东西给去掉,按 crtl +鼠标一个个选中,按 delete 删除
在目录中,有一些地方需要我们重点关注:
- src/main/java:我们写的代码就放在这里
- src/main/resources:放置静态资源或者配置文件,我们通常把html等静态文件放在 /static 目录下
- src/test/java:测试代码的地方,可以进行单元测试
- pom.xml:放置 maven 配置文件
第三步:在 src/main/java 目录下,创建 UserController 类,使用注解 @RestController
和 @RequestMapping
package com.example.demo;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class UserController {@RequestMapping("/hello")public String hello() {return "Hello SpringBoot";}
}
第四步:点击右上角绿色启动按钮启动项目,或者选择在 DemoApplication 启动项目
接着观察控制台的日志
第五步:在浏览器中输入 http://127.0.0.1:8080/hello
出现 “Hello SpringBoot”,就代表着项目运行成功!
4. 项目讲解
分析一下 UserController 类:
- @RestController 注解:表明该类是一个控制器,让 Spring 将其作为 Web 控制器处理,并且会将方法的返回值直接作为 HTTP 响应体返回给客户端
- @RequestMapping 注解:它可以将 HTTP 请求映射到特定的处理器方法上,在这里我们就是把将
/hello
路径映射到hello()
方法上
执行流程:当我们在浏览器地址栏输入 http://127.0.0.1:8080/hello
并访问时,Spring Boot 应用程序会启动一个内嵌的Web服务器(默认是 Tomcat),监听8080端口。当请求到达 /hello
路径时,Spring框架会调用 UserController
类中的 hello()
方法。这个方法处理请求并返回一个字符串 "Hello SpringBoot"
,这个字符串随后被发送回浏览器,浏览器显示为网页内容
以上就是一个非常非常简单的 SpringBoot 项目
结语
今天简单介绍了一下 Spring、Maven,并简单实现了一个 SpringBoot 项目,而关于更加复杂的项目,更多功能的实现,我会在后面的博客中会慢慢道来,敬请期待吧 (●’◡’●)
希望大家能够喜欢本篇博客,有总结不到位的地方还请多多谅解。若有纰漏,希望大佬们能够在私信或评论区指正,博主会及时改正,共同进步
相关文章:
【Spring 框架】初识 Spring
文章目录 前言1. 什么是 Spring2. 什么是 Maven3. 第一个 SpringBoot 项目4. 项目讲解结语 前言 在前面我们一起学习了 JavaSE 的基础知识,随着学习的深入,我们也将逐步介绍 JavaEE 的内容,像 Spring 框架,Mybatis 等等。在本篇博…...
链表(Linkedlist)
序言 我们都了解链表是一种数据的存储结构,在Java使用中逻辑与c,c语言数据结构别无二致,但主要由于Java中不存在指针的说法,从而导致在实现过程中的代码不同,所以在学习的过程中我们无需过于担心,逻辑都是…...
信息安全工程师(79)网络安全测评概况
一、定义与目的 网络安全测评是指参照一定的标准规范要求,通过一系列的技术、管理方法,获取评估对象的网络安全状况信息,并对其给出相应的网络安全情况综合判定。其对象主要为信息系统的组成要素或信息系统自身。网络安全测评的目的是为了提高…...
保研考研机试攻略:python笔记(3)
🐨🐨🐨11sort 与 sorted 区别 sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。 list 的 sort 方法返回的是对已经存在的列表进行操作, 无返回值,而内建函数 sorted 方法返回的…...
刘卫国MATLAB程序设计与应用课后答案PDF第三版
刘卫国《MATLAB程序设计与应用》(第三版)是对普通高等教育“十一五”国家级规划教材《MATLAB程序设计与应用》(第二版)的一次全面修订。全书总体保持第二版原有体系结构,但根据技术发展和应用的需要扩充了许多新内容。全书强调数学方法、算法…...
【鉴权】Web 会话管理:Cookie、Session 和 Token 深度对比
目录 引言一、Cookie二、Session三、Token (JWT)四、总结对比五、Token、Session 和 Cookie 的选择总结 引言 在现代 Web 开发中,Cookie、Session 和 Token 都是用于用户身份验证和状态管理的常见技术。每种技术有其特定的应用场景和优缺点,理解它们之间…...
ArkTS--应用状态
应用状态 应用状态相关的内容需要使用模拟器或真机调试,在API 11开始也支持preview 1.LocalStorage LocalStorage是页面级的UI状态存储,通过Entry装饰器接收参数可以在页面内共享数据 1.1 页面内共享数据 import {MyUser} from ../model/MyUser //用户对…...
yolov8涨点系列之引入CBAM注意力机制
文章目录 YOLOv8 中添加注意力机制 CBAM 具有多方面的好处特征增强与选择通道注意力方面空间注意力方面 提高模型性能计算效率优化: yolov8增加CBAM具体步骤CBAM代码(1)在__init.pyconv.py文件的__all__内添加‘CBAM’(2)conv.py文件复制粘贴CBAM代码(3)修改task.py…...
java标准JavaBean类
1. public class test {//属性private String username;private String password;private String email;private String gender;private int age;//快捷键//altinsert//altFninsert//插件PTG1秒生成标准Javabean //插件ptg c//空参public test() {}//全部参数…...
MATLAB界面设计全攻略:从基础入门到高级应用
引言 MATLAB作为一种功能强大的科学计算软件,不仅可以进行各种复杂的数值计算,还可以通过其图形用户界面设计工具(GUI)为用户提供可视化操作界面。本教程旨在详细介绍MATLAB界面设计的全过程,为初学者提供从入门到精通…...
JavaScript API部分知识点
一、Dom获取&属性操作 (一)、 Web API 基本认知 1、变量声明 const 声明的值不能更改,而且const声明变量的时候需要里面进行初始化 但是对于引用数据类型,const声明的变量,里面存的不是 值,是 地址…...
钉钉调试微应用整理2
第一步 新建应用 钉钉开放平台](https://open-dev.dingtalk.com/) 去新增应用 第二步 配置应用信息 把本地代码运行起来,并设置本地地址 第三步 在本地代码添加调试命令 这里有2中添加方式 哪一种都可以 方式一: index.html页面中 <!DOCTYPE h…...
C++初级入门(1)
第一部分 基础语法入门 一、基础 1、变量与常量 1、变量 变量存在的意义:方便管理内存空间 2、常量 用于记录程序中不可更改的数据 #define 常量名 常量值 const 数据类型 常量名常量值 ; 2、数据类型 1、整型 short 2字节 int 4字节 long Wi…...
group_concat配置影响程序出bug
在 ThinkPHP 5 中,想要临时修改 MySQL 数据库的 group_concat_max_len 参数,可以使用 原生 SQL 执行 来修改该值。你可以通过 Db 类来执行 SQL 语句,从而修改会话(Session)级别的变量。 步骤 设置 group_concat_max_l…...
将Go项目编译为可执行文件(windows/linux)
windows 编译成windows环境exe可执行文件过程,打开文件所在目录,在资源路径框中输入cmd,打开cmd命令框,通过“go env”查看当期环境变量,以windows10环境为例,默认为windows环境。 // 配置环境变量 SET C…...
IMS高压发生器维修高压电源维修XRG100/1000
IMS高压发生器的硬件组成: 高压控制发生器主要由高压发生器和高压控制器两部分组成。高压控制器是控制调节X射线管管电压和管电流的机构,高压发生器是管电压和管电流产生的执行机构,通过高压控制器对高压发生器进行控制调节,通过高压电缆将高压发生器与X射线管连接…...
斯坦福泡茶机器人DexCap源码解析:涵盖收集数据、处理数据、模型训练三大阶段
前言 因为我司「七月在线」关于dexcap的复现/优化接近尾声了,故准备把dexcap的源码也分析下。下周则分析下iDP3的源码——为队伍「iDP3人形的复现/优化」助力 最开始,dexcap的源码分析属于此文《DexCap——斯坦福李飞飞团队泡茶机器人:带…...
RabbitMQ的DLX(Dead-Letter-Exchange 死信交换机,死信交换器,死信邮箱)(重要)
RabbitMQ的DLX 1、RabbitMQ死信队列2、代码示例2.1、队列过期2.1.1、配置类RabbitConfig(关键代码)2.1.2、业务类MessageService2.1.3、配置文件application.yml2.1.4、启动类2.1.5、配置文件2.1.6、测试 2.2、消息过期2.2.1、配置类RabbitConfig2.2.2、…...
【STM32F1】——舵机角度控制与TIM定时器
【STM32F1】——舵机角度控制与TIM定时器 一、简介 本篇主要对舵机DS-S002M模块调试过程进行总结,实现了以下功能: 1)舵机转动角度的控制:利用STM32F103C8T6的TIM定时器产生PWM信号控制舵机DS-S002M转动一定的角度。 二、DS-S002M数字舵机介绍 电压:4.8-6.0V操作角度:…...
想要成为独立游戏作者 :通关!游戏设计之道 2-1 HUD
HUD特指显示屏幕上的信息,在是UI的子集,UI是一个游戏中虽有的交互元素的总称 本文用了大量ai总结 + 个人微调,不喜勿喷,前篇如下想要成为独立游戏作者 :通关!游戏设计之道 1-4 操作篇-C…...
sql专题 之 三大范式
文章目录 背景范式介绍第一范式:属性不可再分第二范式第三范式注意事项 为什么不遵循后续的范式数据库范式在实际应用中会遇到哪些挑战? 背景 数据库的范式(Normal Form)是一组规则,用于设计数据库表结构以 减少数据冗…...
node.js安装和配置教程
软件介绍 Node.js是一个免费的、开源的、跨平台的JavaScript运行时环境,允许开发人员在浏览器之外编写命令行工具和服务器端脚本。 Node.js是一个基于Chrome JavaScript运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript环境,基于Goo…...
定时器输入捕获实验配置
首先,第一个时基工作参数配置 HAL_TIM_IC_Init( ) 还是一样的套路,传参是一个句柄,先定义一个结构体 Instance:指向TIM_TypeDef的指针,表示定时器的实例。TIM_TypeDef是一个包含了定时器寄存器的结构体,用…...
【C/C++】memcpy函数的使用
零.导言 当我们学习了strcpy和strncpy函数后,也许会疑惑整形数组要如何拷贝,而今天我将讲解的memcpy函数便可以拷贝整形数组。 一.memcpy函数的使用 memcpy函数是一种C语言内存函数,可以按字节拷贝任意类型的数组,比如整形数组。 …...
spring-security(两种权限控制方式)
案例(写死的用户密码) package com.zking.security.service;import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.AuthorityUtils; import org.springframework.security.core.userdetails.User; import org.sp…...
【mongodb】数据库的安装及连接初始化简明手册
NoSQL(NoSQL Not Only SQL ),意即"不仅仅是SQL"。 在现代的计算系统上每天网络上都会产生庞大的数据量。这些数据有很大一部分是由关系数据库管理系统(RDBMS)来处理。 通过应用实践证明,关系模型是非常适合于客户服务器…...
【科普】卷积、卷积核、池化、激活函数、全连接分别是什么?有什么用?
概念定义作用/用途解释举例卷积 (Convolution)是一种数学操作,通过在输入数据(如图片)上滑动卷积核,计算局部区域的加权和。提取数据中的局部特征,例如边缘、角点等。卷积就像在图片上滑动一个小的窗口,计算…...
距离向量路由选择协议和链路状态路由选择协议介绍
距离向量路由选择协议(Distance Vector Routing Protocol)和链路状态路由选择协议(Link-State Routing Protocol)是两种主要的网关协议,它们用于在网络内部选择数据传输的最佳路径。下面分别介绍这两种协议:…...
【AI大模型】大型语言模型LLM基础概览:技术原理、发展历程与未来展望
目录 🍔 大语言模型 (LLM) 背景 🍔 语言模型 (Language Model, LM) 2.1 基于规则和统计的语言模型(N-gram) 2.2 神经网络语言模型 2.3 基于Transformer的预训练语言模型 2.4 大语言模型 🍔 语言模型的评估指标 …...
ubuntu 22.04 server 安装 和 初始化 LTS
ubuntu 22.04 server 安装 和 初始化 下载地址 https://releases.ubuntu.com/jammy/ 使用的镜像是 ubuntu-22.04.5-live-server-amd64.iso usb 启动盘制作工具 https://rufus.ie/zh/ rufus-4.6p.exe 需要主板 支持 UEFI 启动 Ubuntu22.04.4-server安装 流程 https://b…...
曰本真人性做爰网站/网址关键词查询网站
本篇介绍参考了网络上一些相关的介绍,以RedHat Enterprise Linux3.0英文版为基础,经过我的亲自试验而总结。1。插入USB存储设备,然后在X-Windows环境下打开Main Menu------>System Tools------>HardWare Browser,选中菜单左…...
30分钟快速建设网站/市场调研报告500字
这几天为了给客户演示我们的项目,发现原来程度在开发环境和部署环境中还不太一样,原本在开发环境中程度运行的好好的,而部署后装在服务器则可能产生不少的错误。因此记录下所遇到的问题,方便以后查询同时也希望能帮遇到相关问题的…...
政府网站建设原则/短视频优化
fscanf用于读取字符串数据流,遇到空白字符(空格 ; 制表符\t; 新行符\n)就停止,若要读取完整的一行数据,可以使用格式控制("%[^\n]%*c"),或者使用行读取函数(ge…...
阿里云做网站视频无法播放/线上推广网络公司
有时git库里的东西比较多,我们只希望像SVN一样,只拉取git库的一个目录。例如:基础代码仓库infra-code_ops有很多基础代码,我们只想拉取仓库里nginx-conf目录的文件。$ git init infra-code_ops-nginx && cd infra-code_o…...
做搜索引擎的网站/写软文一篇多少钱合适
2019独角兽企业重金招聘Python工程师标准>>> 许飞的单曲《父亲写的散文诗》 一九八四年 庄稼还没收割完 女儿躺在我怀里 睡得那么甜 今晚的露天电影 没时间去看 妻子提醒我 修修缝纫机的踏板 明天我要去 邻居家再借点钱 孩子哭了一整天啊 闹着要吃饼干 蓝色的涤卡上…...
新疆网站建设大全/北京网站制作推广
自己做站点的时候,都看看收录和关键词排名什么的,所以打造的这个批量关键词查询工具。#encoding:utf-8import urllib,re,random,time,sys,StringIO,sockettry:import pycurlexcept:passfrom bs4 import BeautifulSoupscore{1: 28.56,2: 19.23,3: 10.20,4…...