SpringBoot的学习要点
目录
SpringBoot
创建项目
配置文件
注解
命名规范
SpringBoot整合第三方技术
……
- 中文文档:Spring Boot 中文文档
SpringBoot
- Spring Boot 是基于 Spring 框架的一种快速构建微服务应用的方式
- 它主要提供了自动配置、简化配置、运行时应用监控等功能
- 它约定了一套项目开发规则来自动完成整个项目的配置,从而让开发人员能够简单地创建完项目就可以直接进入开发阶段
- 优点:
- 起步依赖(简化依赖配置)
- parent, starter
- 使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供,如果发生坐标错误,再指定Version
- 自动配置(简化常用工程相关配置)
- 辅助功能(内置服务器……)
- tomcat(默认):apache出口,应用面广,负载了若干较重的组件
- jetty:更轻量级,负载性能远不及tomcat
- undertow:负载性能勉强胜于tomcat
创建项目
- 推荐使用Maven或Gradle来构建项目
- 快速创建一个SpringBoot项目
- 进入网站:Spring Initializr
- 填写项目的各种配置信息,再添加Spring Web依赖,点击生成压缩包
- 解压压缩包,用IDEA打开解压后得到的文件夹
- 再修改设置里的Maven的仓库信息和使用的jdk版本,pom.xml文件等即可
配置文件
- 默认配置文件为application.yml或application.properties,通常只用于存储SpringBoot项目的核心配置信息
- 存放在项目的src/main/resources目录下,该目录在SpringBoot中的抽象路径为classpath
- 一个项目里可以有多个配置文件,可以把不同类型的配置信息存储在不同的配置文件里
- SpringBoot提供的配置文件格式:(优先顺序:properties>yml)
- application.properties(等号)
- key=value
- application.yml(冒号后有一个空格):
- key: value
- yml数据读取:使用@Value读取单个数据,属性名引用方式:${一级属性名,二级属性名……}
- yml文件内部引用属性:使用${xxx(属性名)},一变全变
- 属性值中的转义字符需要用双引号包起
- lesson: "Spring\tboot\nlesson"
- 配置信息的简便用法:(把配置文件里需要的那部分信息封装成一个对象使用)
- (1)使用@ConfigurationProperties注解绑定配置信息到封装类中
- (2)封装类需要定义为Spring管理的bean,否则无法进行属性注入
注解
- SpringBoot常用注解:
- @SpringBootApplication
- 每一个SpringBoot项目中都有一个启动类(主类),启动类必须被@SpringBootApplication注解标注,用于启动一个SpringBoot项目的SpringBootApplication.run()方法
- 一个项目应该只使用一次@SpringBootApplication注解
- 其只能扫描它所在的包及其子包中的代码,如果无法被扫描到,相当于无效代码
- SpringBoot工程运行后初始化Spring容器,扫描引导类所在的包加载bean
- Bean
- Bean指的是由SpringBoot容器管理的对象
- 依赖关系:一个对象中需要用到另外一个对象
- 依赖注入:SpringBoot在创建一个对象时,会根据“依赖关系”,把这个对象依赖的对象注入其中
- Bean的注册:SpringBoot自动寻找开发人员已经创建好的Bean,并将其保存在SpringBoot容器中
- Bean的注入:把SpringBoot容器中的Bean赋值给某个尚未被赋值的成员变量
- Bean的获取:
- 在类中创建一个属性,通过为属性添加注解,让SpringBoot为这个属性注入Bean
- @Autowired
- @Resource
- @Value
- 当SpringBoot项目被启动时,SpringBoot先会自动扫描所有的组件,然后注册所有的Bean,把这些Bean注入各自的使用场景中
- 组件
- 要想让@Bean生效,那么被标注的方法所在的类必须有下列其中一个的注解,以便被SpringBoot的组件扫描器扫描到
- @Configuration
- @Controller
- @Service
- @Repository
- @Component
- @Import:将@Bean所在类主动注册给SpringBoot
命名规范
包的命名
风格一:以业务场景进行分类
比如与登录有关的都放到login包下
风格二:以功能模块进行分类
比如负责页面跳转的Controller都放到controller包下
常见分类:
配置包:config / configuration,存放被@Configuration标注的类
公共类包:common,存放供其他模块使用的组件、工具、枚举等代码
component:存放被@Component标注的类
utils / tools:存放工具类
constant:存放常量类
控制器包:control / controller
服务包:service,存放所有实现业务的服务类
impl:存放所有实现业务的服务接口
数据库访问接口包
dao,存放用于操作数据库的代码
mapper,项目使用MyBatis作为持久层框架
数据实体包
pojo,项目使用SSH(Spring+Struts+Hibernate)整合框架
model,项目使用SSM(Spring+SpringMVC+MyBatis)整合框架
entity,项目使用MyBatis框架
过滤器包:filter
监听器包:listener
Java文件命名
- 使用“驼峰命名法”:除了第一个单词,后面每个单词的首字母都大写,其他字母小写,单词之间没有下划线
- 以“业务+模块”的方式命名,比如LoginController
- 常见命名方式:
- 控制器类:以Control或Controller结尾
- 服务接口 / 类:以Service结尾
- 接口的实现类:以Impl结尾
- 工具类:以Util结尾
- 配置类:以Config或Configuration结尾
- 组件类:以Component结尾
- 枚举:以Enum结尾
- 实体类:
- 名字必须是名词
- 常见后缀名:
- PO:持久层对象,persistent object
- DO:数据对象, data object
- DTO:数据传输对象, data transfer object
- BO:业务对象, business object
- VO:显示层对象, view object
- POJO:简易的Java对象,plain,ordinary java object
SpringBoot整合第三方技术
- SpringBoot—— MyBatis
- SpringBoot—— Redis
- SpringBoot—— RabbitMQ
- SpringBoot—— Thymeleaf
……
- 学完SpringBoot基础框架知识后,SpringBoot整合其他技术是重难点,用到什么学什么,大体思路不要乱即可
相关文章:

SpringBoot的学习要点
目录 SpringBoot 创建项目 配置文件 注解 命名规范 SpringBoot整合第三方技术 …… 中文文档:Spring Boot 中文文档 SpringBoot Spring Boot 是基于 Spring 框架的一种快速构建微服务应用的方式它主要提供了自动配置、简化配置、运行时应用监控等功能它…...

vue3引入cesium和olcs
首先引入包 pnpm i olcs; pnpm i -D vite-plugin-cesium pnpm i -S cesium在vite.config.js中配置,参考这位大佬的笔记 添加链接描述 import { defineConfig } from vite import vue from vitejs/plugin-vue import cesium from vite-plugin-cesium; // https://…...
代码随想录算法训练营第25天|回溯
回溯part02 216. 组合总和 III /*** param {number} k* param {number} n* return {number[][]}*/ var combinationSum3 function(k, n) {// k个数字相加为n// 只能使用1-9// 每个数字只能使用一次// 不能重复 如 1 2 4 、 4 1 2 不可以let res [];backtracking(k, n, [], …...

Ajax 快速入门
Ajax 概念:Ajax是一种Web开发技术,允许在不重新加载整个页面的情况下,与服务器交换数据并更新网页的部分内容。 作用: 数据交换:Ajax允许通过JavaScript向服务器发送请求,并能够接收服务器响应的数据。 异…...

面试官:前端实现图片懒加载怎么做?这不是撞我怀里了嘛!
前端懒加载(也称为延迟加载或按需加载)是一种网页性能优化的技术,主要用于在网页中延迟加载某些资源,如图片、视频或其他媒体文件,直到它们实际需要被用户查看或交互时才进行加载。这种技术特别适用于长页面或包含大量…...
每天学习一个Windows命令或Linux命令——seq
今天我们来学习 seq命令! seq命令(单词sequence序列的缩写)是Linux系统中用于输出序列化的一串整数的命令。 一、seq用法 seq用法一共有以下三种: seq [选项]... 尾数 seq [选项]... 首数 尾数 seq [选项]... 首数 增量&#…...

C++设计模式-中介者模式,游戏对象之间的碰撞检测
运行在VS2022,x86,Debug下。 31. 中介者模式 中介者模式允许对象之间通过一个中介者对象进行交互,而不是直接相互引用。可以减少对象之间的直接耦合,同时集中化管理复杂的交互。应用:如在游戏开发中,可以使…...

Rust-02-变量与可变性
在Rust中,变量和可变性是两个重要的概念。 变量:变量是用于存储数据的标识符。在Rust中,变量需要声明其类型,例如: let x: i32 5; // 声明一个名为x的变量,类型为i32(整数)&#…...
mov指令中不允许的操作——汇编语言
在 x86 汇编语言中,MOV 指令的限制有助于确保系统的稳定性和正确的操作。下面详细解释为什么这些操作是不允许的。 1. 段寄存器之间直接传送数据 MOV DS, ES ; 错误,不允许原因: 段寄存器是用来定义程序段的开始位置,如代码段…...

Python进阶-部署Flask项目(以TensorFlow图像识别项目WSGI方式启动为例)
本文详细介绍了如何通过WSGI方式部署一个基于TensorFlow图像识别的Flask项目。首先简要介绍了Flask框架的基本概念及其特点,其次详细阐述了Flask项目的部署流程,涵盖了服务器环境配置、Flask应用的创建与测试、WSGI服务器的安装与配置等内容。本文旨在帮…...
WooYun-2016-199433 -phpmyadmin-反序列化RCE-getshell
参考资料: Phpmyadmin 脚本/设置.php反序列化漏洞 (WooYun-2016-199433)复现_phpmyadmin scriptssetup.php 反序列化漏洞-CSDN博客 https://blog.csdn.net/haoxue__/article/details/129368455利用pearcmd.php文件包含拿shell(L…...

社交“学习伙伴”:Meta Llama助力对话升级
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

LabVIEW 反向工程的实现与法律地位
什么是LabVIEW反向工程? 反向工程是指从现有的应用程序或软件中推导出其设计、架构、代码等信息的过程。对于LabVIEW而言,反向工程涉及从现有的VI(虚拟仪器)文件、项目或应用程序中提取出设计思路、功能模块、算法实现等。 LabV…...
Python怎么做单元测试
在Python中,最常用的单元测试框架是unittest。以下是如何使用unittest进行单元测试的步骤: 导入unittest模块: 首先,你需要导入unittest模块。 import unittest创建测试类: 你需要创建一个继承自unittest.TestCase的类…...
ghidra
https://github.com/NationalSecurityAgency/ghidra ghidra是一个so的逆向工具,功能和jadx-gui类似,但是和jadx-gui专注于java层的不同,ghidra专注于native层的代码反编译(从二进制到c语言)。 一、 安装 准备好java1…...

如何解决网络问题?
组织和 IT 管理员尽其所能完善他们的网络,但是,不同程度的网络问题仍然可能出现,这些网络问题需要立即响应和解决,如果这些问题在不合理的时间内得不到解决,网络和组织的损害可能会付出高昂的代价。这就是为什么 IT 管…...

高速USB转串口芯片CH343
CH343封装 截止目前,主要封装有 SOP16: CH343G QFN16: CH343P ESSOP10: CH343K,截止24年6月未生产 CH343串口速度 最高串口速度: 6Mbps,比CH340的2M,快3倍 1、概述 参考版本:1E CH343 是一个 USB 总线的转接芯片,…...

C++ MPI多进程并发
下载 用法 mpiexec -n 8 $PROCESS_COUNT x64\Debug\$TARGET.exe 多进程并发启动 mpiexec -f hosts.txt -n 3 $PROCESS_COUNT x64\Debug\$TARGET.exe 联机并发进程,其它联机电脑需在相同路径下有所有程序 //hosts.txt 192.168.86.16 192.168.86.123 192.168…...

UFS协议入门-分层结构
写在前面:本文参考UFS jedec3.1,本文思维导图如下 1. 分层概述 UFS协议分为3层,从上至下分别是:应用层(UAP),传输层(UTP),互联层(UIC),具体结构如下图所示。 2.1 应用层 在应用层(UAP)中,包括:UFS指令集(UCS),设备管理器(Device Manager),任务管理器(Task Manager…...

Docker Desktop - WSL distro terminated abruptly
打开 PowerShell 或以管理员身份运行的命令提示符。运行以下命令以列出已安装的 WSL 分发: wsl --list 运行以下命令以注销 Docker 相关的分发 wsl --unregister <distro_name> 将<distro_name>替换为实际的 Docker 相关分发的名称。将<distro_…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...

基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...