当前位置: 首页 > news >正文

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 分发&#xff1a; wsl --list 运行以下命令以注销 Docker 相关的分发 wsl --unregister <distro_name> 将<distro_name>替换为实际的 Docker 相关分发的名称。将<distro_…...

HTML-CSS练习例子

HTML CSS 练习 https://icodethis.com 作为前端练习生。不敲代码只看&#xff0c;入门是很慢的&#xff0c;所以直接实战是学习前端最快的途径之一。 这个网站练习HTML CSS的&#xff0c;可以打开了解一下&#xff0c;可以每天打卡&#xff0c;例子简单&#xff0c;循序渐进&…...

【JavaScript脚本宇宙】创造声音的魔法:深入了解Web音频处理库

聆听创意可能性&#xff1a;解锁Web音频库的神奇功能 前言 在Web开发中&#xff0c;处理音频是一个重要且常见的需求。许多JavaScript库和框架旨在简化音频处理和交互式音乐的创建过程。本文将探讨几个流行的Web音频库&#xff0c;介绍它们的概述、主要特性、使用示例以及适用…...

苹果需要专注于让人工智能变得实用,而不是华而不实

谷歌和微软已将其开发者大会作为展示其生成式人工智能能力的平台&#xff0c;现在所有人的目光都集中在下周的全球开发者大会上&#xff0c;预计Apple Intelligence将在此首次亮相。 这家总部位于库比蒂诺的公司面临着巨大的压力。 苹果在人工智能竞赛中落后于同行&#xff0…...

安全专业的硬件远控方案 设备无网也能远程运维

在很多行业中&#xff0c;企业的运维工作不仅仅局限在可以联网的IT设备&#xff0c;不能连接外网的特种设备也需要专业的远程运维手段。 这种特种设备在能源、医疗等行业尤其常见&#xff0c;那么我们究竟如何通过远程控制&#xff0c;对这些无网设备实施远程运维&#xff0c;…...

Freeswitch-soundtouch-变声开发

文章目录 一、介绍二、安装soundtouch2.1 源码安装方式&#xff08;推荐&#xff09;2.1.1下载源码2.1.2解压2.1.3 编译2.1.4 迁移&#xff08;可选&#xff09; 2.2 apt-get 安装 三、使用3.1 终端使用3.2 Freeswitch使用3.2.1编译Freeswitch的mod_soundtouch3.2.2启用 mod_so…...

Unity2D游戏制作入门 | 09(之人物动画制作)

上期链接&#xff1a;Unity2D游戏制作入门 | 08-CSDN博客 人物走路动画逻辑补充&#xff08;该帖没有的内容&#xff0c;我给补充了请先看完这帖&#xff0c;再去看补充&#xff09;&#xff1a;人物按下shifit走路动画设定09&#xff08;第九期先行补充&#xff09; 上期我们…...

【自动部署】4.阿里云ECS服务器 IDEA自动部署项目

如何在IDEA中&#xff0c;自动部署项目到阿里云ECS服务器&#xff1f;今天我们就来实现一键部署功能。 执行maven命令打包免密登录&#xff0c;在IEDA中连接服务器执行stop脚本上传jar包到服务器执行start脚本查看运行日志 1.安装Alibaba Cloud Toolkit 2.配置host 3.自动化部…...

[Algorithm][动态规划][01背包问题][目标和][最后一块石头的重量Ⅱ]详细讲解

目录 1.目标和1.题目链接2.算法原理详解3.代码实现 2.最后一块石头的重量 II1.题目链接2.算法原理详解3.代码实现 1.目标和 1.题目链接 目标和 2.算法原理详解 问题转化&#xff1a;在数组中选择一些数&#xff0c;让这些数的和等于a&#xff0c;一共有多少种选法&#xff1f…...

LabVIEW控制PLC的实现方式

LabVIEW与PLC的结合可以充分发挥两者的优点&#xff0c;实现更高效、灵活和可靠的自动化控制系统。本文将详细介绍LabVIEW控制PLC的实现方式&#xff0c;包括通信接口、数据交换、编程方法及实际应用案例&#xff0c;帮助用户理解并应用这一技术。 通信接口 常见通信协议 La…...

JSTL知识点讲解与配置

JSTL&#xff08;JavaServer Pages Standard Tag Library&#xff09;是Java EE平台中的一个标准库&#xff0c;提供了一组用于在JSP&#xff08;JavaServer Pages&#xff09;中简化和标准化常见任务的标签。这些标签封装了很多常见的JSP功能&#xff0c;可以使得JSP页面更加简…...

做网站的小图标/百度竞价点击软件

》》下拉组件 1.组件结构&#xff1a; 2.index.js&#xff1a; 1 //index.js2 Component({3 /**4 * 组件的属性列表5 */6 properties: {7 propArray: {8 type: Array,9 } 10 }, 11 /** 12 * 组件的初始数据 13 */ 14 data: { 15 selec…...

有没有做兼职的网站/刷神马网站优化排名

nginx默认配置文件 nginx.conf 介绍&#xff1a; 全局配置user nginx;设置nginx服务的系统使用用户worker_processes 1;工作进程数&#xff08;建议和CPU核心数保持一致&#xff09; error_log /var/log/nginx/error.log warn;错误日志。 warn代表级别pid /var/run/…...

用asp做网站遇到的问题/线上销售渠道有哪些

查看配置文件&#xff1a;https://raw.githubusercontent.com/antirez/redis/5.0.3/redis.conf 主要参数说明 redis.conf 配置项说明如下&#xff1a; 序号配置项说明1 daemonize no Redis 默认不是以守护进程的方式运行&#xff0c;可以通过该配置项修改&#xff0c;使用 y…...

单招网站开发/企业网站建设公司

eclipse插件的安装方法大体有以下三种:...

做网站要具备些什么条件/百度推广登陆网址

2019&#xff0c;直播带货开始成了一种新的销售模式。 1月19日&#xff0c;拼多多方面宣布多多直播正式上线。用户登录拼多多APP-个人中心- 点击头像-点击“我的资料”即可找到多多直播。 一、拼多多不一样的带货直播 2019年11月27日&#xff0c;拼多多首次的上线直播&#…...

今日油价92汽油下调/桂林seo顾问

#include <stdio.h>#include <math.h>int main(){ /*一个整数&#xff0c;加上100后是一个 完全平方数&#xff0c;再加上168后也是 一个完全平方数,求该数是多少*/ long int i,x,y; for (i1;i<100000;i) { xsqrt(i100); …...