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

SpringBoot基础详解

文章目录

  • SpringBoot简介
    • 入门案例
      • 入门案例搭建
      • 基于SpringBoot官网创建项目
      • SpringBoot项目快速启动
    • SpringBoot概述
      • 起步依赖
      • 默认配置
  • 基础配置
    • 配置文件格式
      • 修改服务器端口
      • SpringBoot配置文件加载顺序
    • yaml
      • yaml语法规则
      • yaml数组数据
      • yaml数据读取
    • 多环境开发配置
      • 多环境启动配置
      • 多环境启动命令格式
      • 多环境开发控制
    • 配置文件分类
  • 整合第三方技术
    • 整合JUnit
      • Spring整合JUnit
      • SpringBoot整合JUnit
    • 基于SpringBoot实现SSM整合
    • SpringBoot实现SSM整合

SpringBoot简介

入门案例

SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建及开发过程

入门案例搭建

手动创建方式:

  1. 新建maven项目
  2. 引入依赖

image.png

  1. 创建引导类

image.png

  1. 创建开发控制器类
@RestController
@RequestMapping("/books")
public class BookController {@GetMapping("/{id}")public String getById(@PathVariable Integer id) {System.out.println("id ==> " + id);return "hello , spring boot! ";}
}
  1. 运行生成的Application类

image.png
SpringBoot脚手架方式

  1. 创建新模块,选择Spring初始化,并配置模块相关基础信息

image.png

  1. 选择当前模块需要使用的技术集

image.png

  1. 开发控制器类
@RestController
@RequestMapping("/books")
public class BookController {@GetMapping("/{id}")public String getById(@PathVariable Integer id) {System.out.println("id ==> " + id);return "hello , spring boot! ";}
}
  1. 运行自动生成的Application类

image.png

  • Spring程序与SpringBoot程序对比

image.png
注意事项
基于idea开发SpringBoot程序需要确保联网且能够加载到程序框架结构

基于SpringBoot官网创建项目

image.png

SpringBoot项目快速启动

  1. 对SpringBoot项目进行打包(执行Maven构建指令package)
  2. 执行启动指令
java -jar springboot_01_quickstart.jar	# 项目的名称根据实际情况修改

注意
jar支持命令行启动需要依赖maven插件支持,请确定打包时是否具有SpringBoot对应的maven插件

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

SpringBoot概述

起步依赖

  • starter
    • SpringBoot中常见项目名称,定义了当前项目使用的所有项目坐标,以达到减少依赖配置的目的
  • parent
    • 所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的
    • spring-boot-starter-parent(2.5.0)与 spring-boot-starter-parent(2.4.6)共计57处坐标版本不同
  • 实际开发
    • 使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供
    • 如发生坐标错误,再指定version(要小心版本冲突)

默认配置

tomact默认配置了端口号为8080

基础配置

配置文件格式

修改服务器端口

SpringBoot提供了多种属性配置方式

  • application.properties
server.port=80
  • application.yml
server:port: 81
  • application.yaml
server:port: 82

SpringBoot配置文件加载顺序

application.properties> application.yml>application.yaml
注意事项

  1. SpringBoot核心配置文件文件名为application
  2. SpringBoot内置属性过多,且所有属性集中在一起修改,在使用时,通过提示键+关键字修改属性

yaml

  • YAML(YAML Ain’t Markup Language),一种数据序列化格式
  • 优点
    • 容易阅读
    • 容易与脚本语言交互
    • 以数据为核心,重数据轻格式
  • YAML文件扩展名
    • .yml(主流)
    • .yaml

yaml语法规则

  • 大小写敏感
  • 属性层级关系使用多行描述,每行结尾使用冒号结束
  • 使用缩进表示层级关系,同层级左侧对其,只允许使用空格(不允许使用Tab键)
  • 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
  • #表示注释
  • 核心规则:数据前面加空格与冒号隔开

yaml数组数据

  • 数组数据在数据书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据中间用空格分割

image.png

yaml数据读取

  • 使用@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名…}

image.png

  • 封装全部数据到Environment对象

image.png

  • 自定义对象封装指定数据(常用)
public class Enterprise {private String name;private Integer age;private String tel;private String[] subject;//自行添加getter、setter、toString()等方法
}

image.png

  • 自定义对象封装数据警告解决方案

image.png

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
</dependency>

多环境开发配置

多环境启动配置

  • yaml文件多环境启动

image.png
image.png
image.png

  • properties文件多环境启动
#主启动配置文件 application.properties
spring.profiles.active=pro
#环境分类配置文件 application-pro.properties
server.port=80
#环境分类配置文件 application-dev.properties
server.port=81
#环境分类配置文件application-test.properties
server.port=82

多环境启动命令格式

  • 带参数启动SpringBoot
java –jar springboot.jar --spring.profiles.active=test
java –jar springboot.jar --server.port=88
java –jar springboot.jar --server.port=88 --spring.profiles.active=test
  • 参数加载优先顺序

image.png

多环境开发控制

Maven与SpringBoot多环境兼容(步骤)

  1. Maven中设置多环境属性
<profiles><profile><id>dev_env</id><properties><profile.active>dev</profile.active></properties><activation><activeByDefault>true</activeByDefault></activation></profile><profile><id>pro_env</id><properties><profile.active>pro</profile.active></properties></profile><profile><id>test_env</id><properties><profile.active>test</profile.active></properties></profile>
</profiles>
  1. SpringBoot中引入Maven属性

image.png

  1. 执行Maven打包指令
  • Maven指令执行完毕后,生成了对应的包,其中类参与编译,但是配置文件并没有编译,而是复制到包中

image.png

  • 解决思路:对于源码中非java类的操作要求加载Maven对应的属性,解析${}占位符
  1. 对资源文件开启对默认占位符的解析
<build><plugins><plugin><artifactId>maven-resources-plugin</artifactId><configuration><encoding>utf-8</encoding><useDefaultDelimiters>true</useDefaultDelimiters></configuration></plugin></plugins>
</build>
  • Maven打包加载属性,打包顺利通过

image.png

配置文件分类

image.png

  • SpringBoot中4级配置文件
    • 1级: file :config/application.yml 【最高】
    • 2级: file :application.yml
    • 3级:classpath:config/application.yml
    • 4级:classpath:application.yml 【最低】
  • 作用:
    • 1级与2级留做系统打包后设置通用属性
    • 3级与4级用于系统开发阶段设置通用属性

整合第三方技术

整合JUnit

Spring整合JUnit

image.png

SpringBoot整合JUnit

  1. 添加整合Junit起步依赖(可以直接勾选)
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>
  1. 编写测试类,默认自动生成了一个
@SpringBootTest
class Springboot07JunitApplicationTests {@Autowiredprivate BookService bookService;@Testpublic void testSave() {bookService.save();}
}

基于SpringBoot实现SSM整合

  • SpringBoot整合Spring(不存在)
  • SpringBoot整合SpringMVC(不存在)
  • SpringBoot整合MyBatis(主要)
  1. 创建新模块,选择Spring初始化,并配置模块相关基础信息

image.png

  1. 选择当前模块需要使用的技术集(Mybatis,MySQL)

image.png

  1. 设置数据源参数
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTCusername: rootpassword: roottype: com.alibaba.druid.pool.DruidDataSource

注意事项
SpringBoot版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区,或在MySQL数据库端配置时区解决此问题

jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
  1. 定义数据层接口与映射配置
@Mapper
public interface UserDao {@Select("select * from tbl_book where id=#{id}")Book getById(Integer id);
}
  1. 测试类中注入dao接口,测试功能
@SpringBootTest
class Springboot08MybatisApplicationTests {@Autowiredprivate BookDao bookDao;@Testpublic void testGetById() {Book book = bookDao.getById(1);System.out.println(book);}
}

SpringBoot实现SSM整合

  1. 创建SpringBoot工程,将三个依赖选中,添加druid依赖
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.6</version>
</dependency>
  1. 复制ssm_demo中的各种资源
  2. 删除config包中的所有配置,在BookDao接口上加@Mapper注解
  3. 将application.properties修改成application.yml,配置端口号和连接参数
server:port: 80
# todo 4 配置数据库连接参数
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/ssm_dbusername: rootpassword: roottype: com.alibaba.druid.pool.DruidDataSource
  1. 修改BookServiceTest配置类,进行配置
  2. 在static目录中提供index.html页面,跳转到"pages/books.html"
<script>location.href="pages/books.html"
</script>

最后运行引导类即可访问 localhost

相关文章:

  • 指针变量加1为什么地址加了4?
  • Python01:初入Python(Mac)
  • 【计算机视觉(3)】
  • Docker 安装最新版MongoDB 限制内存 配置权限
  • 电影《朝云暮雨》观后感
  • SW 草图明显显示
  • C++---运算符重载
  • VUE3好看的酒网站模板源码
  • [猫头虎分享21天微信小程序基础入门教程]第13天:小程序的表单与用户输入处理
  • 9.6 Go语言入门(数组、切片和指针)
  • 深度学习之基于YOLOV5安全帽检测系统
  • k8s基础命令
  • 执行sql脚本——kettle开发03
  • 《深入解析:近邻算法的原理、实现与应用》
  • 自定义类型:结构体
  • (三)从jvm层面了解线程的启动和停止
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • CODING 缺陷管理功能正式开始公测
  • crontab执行失败的多种原因
  • CSS 提示工具(Tooltip)
  • Git的一些常用操作
  • HTML中设置input等文本框为不可操作
  • iOS编译提示和导航提示
  • MySQL QA
  • Next.js之基础概念(二)
  • nginx 配置多 域名 + 多 https
  • Python socket服务器端、客户端传送信息
  • Webpack 4 学习01(基础配置)
  • 基于组件的设计工作流与界面抽象
  • 技术胖1-4季视频复习— (看视频笔记)
  • 坑!为什么View.startAnimation不起作用?
  • 批量截取pdf文件
  • 入口文件开始,分析Vue源码实现
  • 数据仓库的几种建模方法
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 为什么要用IPython/Jupyter?
  • 我感觉这是史上最牛的防sql注入方法类
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 关于Android全面屏虚拟导航栏的适配总结
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​字​节​一​面​
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • ###STL(标准模板库)
  • (4.10~4.16)
  • (Java入门)学生管理系统
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (一)认识微服务
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)母版页和相对路径
  • (转载)跟我一起学习VIM - The Life Changing Editor