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_…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
