赞
踩
学习要求
熟悉Spring基础
熟悉Maven使用
环境要求
Java8及以上
Maven 3.5及以上
学习资料
Spring Boot官网:https://spring.io/projects/spring-boot
Spring Boot 官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/
Spring Boot 中文文档:http://felord.cn/_doc/_springboot/2.1.5.RELEASE/_book/
①创建新模块,选择Spring Initializr,并配置模块相关基础信息
②:选择当前模块需要使用的技术集
③:开发控制器类
//Rest 模式
@RestController
@RequestMapping("/books")
public class BookController {
@GetMapping
public String getById() {
System.out.println("springboot is running...");
return "springboot is running...";
}
}
④:运行自动生成的Application类
运行结果如下:
⑤:打开浏览器访问url地址为:http://localhost:8080/books
最简SpringBoot程序所包含的基础文件
1.pom.xml文件
2.Application类
Spring程序与SpringBoot程序对比
开发SpringBoot程序可以根据向导进行联网快速制作
SpringBoot程序需要基于JDK8进行制作
SpringBoot程序中需要使用何种功能通过勾选选择技术
运行SpringBoot程序通过运行Application程序入口进行
基于SpringBoot官网创建项目,地址:https://start.spring.io/
1.配置springboot
xxxxxxxxxx //账户不能包含特殊字符String validPattern = “[`!@#$%^&()+=|{}‘:;’,\\[\\].<>/?!@#¥%……&()——+|{}【】‘;:”“’。,、?]”;Matcher matcher = Pattern.compile(validPattern).matcher(userAccount);if (matcher.find()) { return -1;}java
2.选择依赖
3.生成项目的压缩文件
基于阿里云创建项目,地址:https://start.aliyun.com
1.创建模块,配置信息
2.技术选型以及版本号
注意事项:
1.手工创建项目(手工导入坐标)
2.修改pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.6</version> </parent> <groupId>com.example</groupId> <artifactId>springboot_01_04_quickstart</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
3.手工创建项目(手工制作引导类)
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
1.springboot工程需要隐藏的 .mvn;.gitignore;HELP.md;mvnw;mvnw.cmd;*.iml;
Idea中隐藏指定文件或指定类型文件
Setting → File Types → Ignored Files and Folders
输入要隐藏的文件名,支持*号通配符
回车确认添加
spring-boot-starter-dependencies的pom.xml中我们可以发现,一部分坐标的版本、依赖管理、插件管理已经定义好,所以我们的SpringBoot工程继承spring-boot-starter-parent后已经具备版本锁定等配置了。所以起步依赖的作用就是进行依赖的传递。
开发SpringBoot程序要继承spring-boot-starter-parent
spring-boot-starter-parent中定义了若干个依赖管理
继承parent模块可以避免多个依赖使用相同技术时出现依赖版本冲突
继承parent的形式也可以采用引入依赖的形式实现效果
starter
SpringBoot中常见项目名称,定义了当前项目使用的所有依赖坐标,以达到减少依赖配置的目的
parent
所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的
spring-boot-starter-parent各版本间存在着诸多坐标版本不同
实际开发
使用任意坐标时,仅书写GAV(groupId, artifactId, version)中的G和A,V由SpringBoot提供,除非SpringBoot未提供对应版本V
如发生坐标错误,再指定Version(要小心版本冲突)
开发SpringBoot程序需要导入坐标时通常导入对应的starter
每个不同的starter根据功能不同,通常包含多个依赖坐标
使用starter可以实现快速配置的效果,达到简化配置的目的
启动方式
`@SpringBootApplication`
`public class Springboot01QuickstartApplication {`
`public static void main(String[] args) {`
`SpringApplication.*run*(Springboot01QuickstartApplication.class, args);`
`}`
}
SpringBoot的引导类是Boot工程的执行入口,运行main方法就可以启动项目
SpringBoot工程运行后初始化Spring容器,扫描引导类所在包加载bean
SpringBoot工程提供引导类用来启动程序
SpringBoot工程启动后创建并初始化Spring容器
使用maven依赖管理变更起步依赖项
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> *<!--web**起步依赖环境中,排除**Tomcat**起步依赖**-->* <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> *<!--**添加**Jetty**起步依赖,版本由**SpringBoot**的**starter**控制**-->* <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency> </dependencies>
Jetty比Tomcat更轻量级,可扩展性更强(相较于Tomcat),谷歌应用引擎(GAE)已经全面切换为Jetty
内嵌Tomcat服务器是SpringBoot辅助功能之一
内嵌Tomcat工作原理是将Tomcat服务器作为对象运行,并将该对象交给Spring容器管理
变更内嵌服务器思想是去除现有服务器,添加全新的服务器
原则
保留工程基础结构
抹掉原始工程痕迹
1.创建模板
2.复制模板,创建模块
3.修改pom.xml的配置
4.在idea中导入复制后的模块
5.导入模块完成
6.找到pom.xml文件
1.修改服务器端口
2.进入配置文件application.properties
SpringBoot默认配置文件application.properties,通过键值对配置对应属性
修改配置
修改服务器端口
# 服务器端口配制
server.port=80
1.修改配置
修改服务器端口
server.port=80
关闭运行日志图标(banner)
spring.main.banner-mode=off
设置日志相关
logging.level.root=debug
logging.level.root=info(默认)
# 服务器端口配置
server.port=80
# 修改banner
# spring.main.banner-mode=off
# spring.banner.image.location=logo.png
# 日志
logging.level.root=info
2.SpringBoot内置属性查询
https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties
官方文档中参考文档第一项:Application Propertie
SpringBoot中导入对应starter后,提供对应配置属性
书写SpringBoot配置采用关键字+提示形式书写
1.application.properties
server.port=80
2.application.yml
server:
port: 81
3.application.yaml
server:
port: 82
SpringBoot配置文件加载顺序
application.properties > application.yml > application.yaml
常用配置文件种类
application.yml
配置文件间的加载优先级
properties(最高)
yml
yaml(最低)
不同配置文件中相同配置按照加载优先级相互覆盖 (高优先级配置内容会覆盖低优先级配置内容),不同配置文件中不同配置全部保留
YAML(YAML Ain’t Markup Language),一种数据序列化格式
1.优点:
1.容易阅读
2.容易与脚本语言交互
3.以数据为核心,重数据轻格式
2.YAML文件扩展名
yml主流
.yaml
yaml语法规则
key: value
-> value 前面一定要有空格**
大小写敏感
属性层级关系使用多行描述,每行结尾使用冒号结束
使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
表示注释
核心规则:数据前面要加空格与冒号隔开
3.数组表示方式:在属性名书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔
yaml语法规则
大小写敏感
属性层级关系使用多行描述,每行结尾使用冒号结束
使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
#表示注释
注意属性名冒号后面与数据之间有一个空格
字面值、对象数据格式、数组数据格式(略)
1.在配置文件中可以使用属性名引用方式引用属性
1.自定义对象封装指定数据
2.自定义对象封装指定数据的作用
# 创建类,用于封装下面的数据
# 由spring帮我们去加载数据到对象中,一定要告诉spring加载这组信息
# 使用时候从spring中直接获取信息使用
datasource:
driver: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost/ssm_db
username: root
password: root
//1.定义数据模型封装yaml文件中对应的数据
//2.定义为spring管控的bean
@Component
//3.指定加载的数据
@ConfigurationProperties(prefix = "datasource")
public class MyDataSource {
private String driver;
private String url;
private String username;
private String password;
//省略get/set/tostring 方法
}
自动装配封装数据
@Autowired
private MyDataSource myDataSource;
1.添加Junit的起步依赖 Spring Initializr 创建时自带
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rJoWXd7R-1665217955088)(C:/Users/86155/AppData/Roaming/Typora/typora-user-images/image-20221005121612411.png)]
2.SpringBoot整合JUnit
@SpringBootTest
名称:@SpringBootTest
类型:测试类注解
位置:测试类定义上方
作用:设置JUnit加载的SpringBoot启动类
①:创建新模块,选择Spring初始化,并配置模块相关基础信息
②:选择当前模块需要使用的技术集(MyBatis、MySQL)
③:设置数据源参数
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url:jdbc:mysql://localhost:3306/mybatis
username:root
password:root
④:创建user表
在 mybatis 数据库中创建 user 表
tb_user.sq脚本文件
SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for tb_user -- ---------------------------- DROP TABLE IF EXISTS `tb_user`; CREATE TABLE `tb_user` ( `id` int NOT NULL AUTO_INCREMENT, `username` varchar(20) DEFAULT NULL, `password` varchar(20) DEFAULT NULL, `gender` char(1) DEFAULT NULL, `addr` varchar(30) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ---------------------------- -- Records of tb_user -- ---------------------------- INSERT INTO `tb_user` VALUES ('1', 'zhangsan', '123', '男', '北京'); INSERT INTO `tb_user` VALUES ('2', '李四', '234', '女', '天津'); INSERT INTO `tb_user` VALUES ('3', '王五', '11', '男', '西安'); INSERT INTO `tb_user` VALUES ('4', '赵六', '111', '女', '上海');
⑤:创建实体Bean
public class user {
private Integer id;
private String username;
private String password;
private String gender;
private String addr;
}
⑥: 定义数据层接口与映射配置
@Mapper
public interface UserDao {
@Select("select * from tb_user where id = #{id}")
public User getById(Integer id);
}
⑦:测试类中注入dao接口,测试功能
@SpringBootTest
class Springboot05MybatisApplicationTests {
@Autowired
private UserDao userDao;
@Test
void contextLoads() {
System.out.println(userDao.getById(1));
}
}
⑧:运行结果如下
1.SpringBoot版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区
jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
2.MySQL 8.X驱动强制要求设置时区
3.驱动类过时,提醒更换为com.mysql.cj.jdbc.Driver
创建新模块,选择Spring初始化,并配置模块相关基础信息
选择当前模块需要使用的技术集(MybatisPlus,MySQL)—官网正统做法
创建新模块,选择Spring初始化,并配置模块相关基础信息
选择当前模块需要使用的技术集(MybatisPlus,MySQL)–阿里云配置
①:手动添加SpringBoot整合MyBatis-Plus的坐标,可以通过mvnrepository获取
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
注意事项: 由于SpringBoot中未收录MyBatis-Plus的坐标版本,需要指定对应的Version
②:定义数据层接口与映射配置,继承BaseMapper
@Mapper
public interface UserDao extends BaseMapper<User> {
}
③:其他同SpringBoot整合MyBatis,可参考上文:配置数据源,实体类,数据库文件
④:测试类中注入dao接口,测试功能
@SpringBootTest
class Springboot06MybatisPlusApplicationTests {
@Autowired
private UserDao userDao;
@Test
void contextLoads() {
userDao.selectById(2);
}
}
⑤运行结果如下:
这里由于创建数据库时候有前缀,导致报错。
注意: 如果你的数据库表有前缀要在 application.yml 添加如下配置:
#设置Mp相关的配置
mybatis-plus:
global-config:
db-config:
table-prefix: tb_
填完如下配置之后:
运行如下:成功了
1.手工添加MyBatis-Plus对应的starter
2.数据层接口使用BaseMapper简化开发
3.需要使用的第三方技术无法通过勾选确定时,需要手工添加坐标
创建新模块,选择Spring初始化,并配置模块相关基础信息
选择当前模块需要使用的技术集(Druid、MySQL)
①: 导入Druid对应的starter
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
②: 指定数据源类型 (这种方式只需导入一个 Druid 的坐标)
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource
或者 变更Druid的配置方式(推荐) 这种方式需要导入 Druid对应的starter
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
username: root
password: root
③:其他同SpringBoot整合MyBatis,可参考上文:配置数据源,实体类,Dao层
④:运行如下
小结:
1.整合Druid需要导入Druid对应的starter
2.根据Druid提供的配置方式进行配置
3.整合第三方技术通用方式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。