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_…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
