目录
一、springboot入门案例
1. SpringBoot 项目开发步骤
(1)创建新模块,选择Spring初始化,并配置模块相关基础信息编辑
(2)设置 GAV 坐标及 pom 配置信息 编辑
(3)选择 Spring Boot 版本及依赖编辑
(4)设置模块名称、Content Root 路径及模块文件的目录,然后点击finish即可
(5)项目结构如下:编辑
(6)对pom.xml文件进行解释
2. 创建一个 Spring MVC 的 Spring BootController
(1)创建SpringBootController 类
(2)启动Application类中的main方法
(3)在浏览器中输入 http://localhost:8080/springBoot/say进行访问
3. SpringBoot项目快速启动
4. 分析
二、SpringBoot概述
1. 简介
2. 特性
3. 四大核心
4. 起步依赖
(1)starter
(2)parent
(3)实际开发
5. 辅助功能
(1)SpringBoot程序启动
(2)SpringBoot在创建项目时,采用jar的打包方式
(3)SpringBoot的引导类是项目的入口,运行main方法就可以启动项目
(4)使用maven依赖管理变更起步依赖项
(5)Jetty比Tomcat更轻量级,可扩展性更强
三、基础配置
1. 配置文件格式
(1)修改服务器端口
(2) 自动提示功能消失解决方案
(3)SpringBoot配置文件加载顺序
(4)注意事项
2. yaml
(1)什么是yaml
(2)yaml语法规则
(3)数组数据
(4) yaml数据读取
3. 多环境开发配置
(1)多环境启动配置
a. yaml文件多环境启动
b. properties文件多环境启动
(2)多环境启动命令格式
a. 带参数启动SpringBoot
b. 参数加载优先顺序
(3)多环境开发控制
①:Maven中设置多环境属性
②:SpringBoot中引用Maven属性
③:执行Maven打包指令
4. 配置文件分类
四、整合第三方技术
1. SpringBoot整合JUnit
(1)Spring整合JUnit(复习)编辑
(2)SpringBoot整合JUnit
2. 基于SpringBoot实现SSM整合
(1)Spring整合MyBatis(复习)
(2)SpringBoot整合MyBatis
①:创建新模块,选择Spring初始化,并配置模块相关基础信息
②:选择当前模块需要使用的技术集(MyBatis、MySQL)
③:设置数据源参数
④:定义数据层接口与映射配置
⑤:测试类中注入dao接口,测试功能
(3)SpringBoot实现ssm整合案例
static:存放静态资源。如图片、CSS、JavaScript 等
templates:存放 Web 页面的模板文件
application.properties/application.yml 用于存放程序的各种依赖模块的配置信息,
比如 服务端口,数据库连接配置等
.gitignore:使用版本控制工具 git 的时候,设置一些忽略提交的内容
Application.java:SpringBoot 程序执行的入口,执行该程序中的 main 方法,
启动当前SpringBoot项目。
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.2.1.RELEASE
com.bjpowernode.springboot
002-springboot-springmvc
1.0.0
002-springboot-springmvc
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.springframework.boot
spring-boot-maven-plugin
注意:新创建的类一定要位于 Application 同级目录或者下级目录,否则 SpringBoot 加
载不到。
package com.bjpowernode.springboot.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class SpringBootController {
@RequestMapping(value = "/springBoot/say")
public @ResponseBody String say() {
return "Hello,springBoot!";
}
}
通过在控制台的输出,可以看到启动 SpringBoot 框架,会启动一个内嵌的 tomcat,端
口号为 8080,上下文根为空 。
(1)对SpringBoot项目打包(执行Maven构建指令package)
(2) 执行启动指令
java -jar springboot_01_quickstart.jar # 项目的名称根据实际情况修改
注意事项:
jar支持命令行启动需要依赖maven插件支持,请确认打包时是否具有SpringBoot对应的maven插
件。
org.springframework.boot
spring-boot-maven-plugin
(1)spring-boot-starter-parent 是一个 Springboot 的父级依赖,开发 SpringBoot 程序都需
要继承该父级项目,它用来提供相关的 Maven 默认依赖,使用它之后,常用的 jar
包依赖可以省去 version 配置
(2)Spring Boot 提供了一些默认的jar 包的依赖,可查看该父级依赖的 pom 文件
(3)如果不想使用某个默认的依赖版本,可以通过 pom.xml 文件的属性配置覆盖各个
依赖项,比如覆盖 Spring 版本:
5.0.0.RELEASE spring-framework.version >
(4) @SpringBootApplication 注解是 Spring Boot 项目的核心注解,主要作用是开启
Spring 自动配置,如果在 Application 类上去掉该注解,那么不会启动 SpringBoot程序
(5)main 方法是一个标准的 Java 程序的 main 方法,是boot项目启动运行的入口
(6)@Controller 及 @ResponseBody 依然是我们之前的 Spring MVC,因为 Spring Boot
的里面依然是使用我们的 Spring MVC + Spring + MyBatis 等框架
springboot是spring家族中的一个全新框架,用来简化spring程序的创建和开发过程。在以往我们通过SpringMVC+Spring+Mybatis框架进行开发的时候,我们需要配置web.xml,spring配置,mybatis配置,然后整合在一起,而springboot抛弃了繁琐的xml配置过程,采用大量默认的配置来简化我们的spring开发过程。
SpringBoot化繁为简,使开发变得更加的简单迅速。
Spring程序缺点:
配置繁琐
依赖设置繁琐
SpringBoot程序优点:
自动配置
起步依赖(简化依赖配置)
辅助功能(内置服务器,……)
(1) 能够快速创建基于spring的程序
(2) 能够直接使用Java main方法启动内嵌的Tomcat服务器运行springboot程序,不需要部署war包
(3) 提供约定的starter POM来简化Maven配置,让Maven的配置变得简单
(4) 自动化配置,根据项目的Maven依赖配置,springboot自动配置spring、springmvc等
(5) 提供了程序的健康检查功能
(6) 基本可以完全不使用xml配合文件,采用注解配置
自动配置、起步依赖、Actuator、命令行界面
SpringBoot中常见项目名称,定义了当前项目使用的所有项目坐标,以达到减少依赖配置的目的
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.5.0
com.itheima
springboot-01-quickstart
0.0.1-SNAPSHOT
org.springframework.boot
spring-boot-starter-web
4.0.0
org.springframework.boot
spring-boot-dependencies
2.5.0
pom
4.0.1
...
所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的spring-boot-starter-parent(2.5.0)与 spring-boot-starter-parent(2.4.6)共计57处坐标版本不同
4.0.0
org.springframework.boot
spring-boot-dependencies
2.5.0
spring-boot-starter-parent
pom
...
使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供,如发生坐标错误,再指定version(要小心版本冲突)
junit
junit
${junit.version}
javax.servlet
javax.servlet-api
${servlet-api.version}
org.springframework.boot
spring-boot-starter-parent
2.5.0
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
@SpringBootApplication
public class Springboot01QuickstartApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot01QuickstartApplication.class, args);
}
}
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
org.springframework.boot
spring-boot-starter-jetty
http://localhost:8080/books/1 >>> http://localhost/books/1
SpringBoot提供了多种属性配置方式:
server.port=80
b. application.yml
server:
port: 81
c. application.yaml
server:
port: 82
操作步骤:
application.properties > application.yml > application.yaml
1. SpringBoot核心配置文件名为application
2. SpringBoot内置属性过多,且所有属性集中在一起修改,在使用时,通过提示键+关键字修改属性
YAML(YAML Ain't Markup Language),一种数据序列化格式
优点:
容易阅读
容易与脚本语言交互
以数据为核心,重数据轻格式
YAML文件扩展名
.yml(主流)
.yaml
(1)大小写敏感
(2)属性层级关系使用多行描述,每行结尾使用冒号结束
(3)使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
(4)属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
(5)#表示注释
(6)核心规则:数据前面要加空格与冒号隔开
数组数据在数据书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔
public class Enterprise {
private String name;
private Integer age;
private String tel;
private String[] subject;
//自行添加getter、setter、toString()等方法
}
d. 自定义对象封装数据警告解决方案
org.springframework.boot
spring-boot-configuration-processor
true
#主启动配置文件 application.properties
spring.profiles.active=pro
#环境分类配置文件 application-pro.properties
server.port=80
#环境分类配置文件 application-dev.properties
server.port=81
#环境分类配置文件application-test.properties
server.port=82
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
参看文档:https://docs.spring.io/spring-boot/docs/current/reference/html/spring-bootfeatures.html#boot-features-external-config
a. Maven与SpringBoot多环境兼容(步骤)
dev_env
dev
true
pro_env
pro
test_env
test
Maven指令执行完毕后,生成了对应的包,其中类参与编译,但是配置文件并没有编译,而是复制到包中
解决思路:对于源码中非java类的操作要求加载Maven对应的属性,解析${}占位符
④:对资源文件开启对默认占位符的解析
maven-resources-plugin
utf-8
true
b. Maven打包加载到属性,打包顺利通过
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起步依赖(可以直接勾选)
org.springframework.boot
spring-boot-starter-test
test
【第二步】编写测试类,默认自动生成了一个
@SpringBootTest
class Springboot07JunitApplicationTests {
@Autowired
private BookService bookService;
@Test
public void testSave() {
bookService.save();
}
}
a. SpringConfig
导入JdbcConfig
导入MyBatisConfig
@Configuration
@ComponentScan("com.itheima")
@PropertySource("classpath:jdbc.properties")
@Import({JdbcConfig.class, MyBatisConfig.class})
public class SpringConfig {
}
b. JDBCConfig
定义数据源(加载properties配置项:driver、url、username、password)
#jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_db
jdbc.username=root
jdbc.password=itheima
public class JdbcConfig {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String userName;
@Value("${jdbc.password}")
private String password;
@Bean
public DataSource getDataSource() {
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(userName);
ds.setPassword(password);
return ds;
}
}
c. MyBatisConfig
定义SqlSessionFactoryBean
定义映射配置
@Bean
public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource) {
SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
ssfb.setTypeAliasesPackage("com.itheima.domain");
ssfb.setDataSource(dataSource);
return ssfb;
}
@Bean
public MapperScannerConfigurer getMapperScannerConfigurer() {
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setBasePackage("com.itheima.dao");
return msc;
}
SpringBoot整合Spring(不存在)
SpringBoot整合SpringMVC(不存在)
SpringBoot整合MyBatis(主要)
③:设置数据源参数
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource
注意事项:
SpringBoot版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区,或在
MySQL数据库端配置时区解决此问题
jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
@Mapper
public interface UserDao {
@Select("select * from tbl_book where id=#{id}")
Book getById(Integer id);
}
@SpringBootTest
class Springboot08MybatisApplicationTests {
@Autowired
private BookDao bookDao;
@Test
public void testGetById() {
Book book = bookDao.getById(1);
System.out.println(book);
}
}
【第一步】创建SpringBoot工程,添加druid依赖
com.alibaba
druid
1.2.6
【第二步】复制springmvc_11_page工程各种资源(主java类、页面、测试类)
【第三步】删除config包中的所有配置,在BookDao接口上加@Mapper注解
//todo 3 在BookDao接口上加@Mapper注解,让SpringBoot给接口创建代理对象
@Mapper
public interface BookDao {
//...
}
【第四步】将application.properties修改成application.yml,配置端口号和连接参数
server:
port: 80
# todo 4 配置数据库连接参数
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource
【第五步】修改BookServiceTest配置类,进行配置
// todo 5 修改单元测试类,添加@SpringBootTest主键,修复@Test注解导包
@SpringBootTest
public class BookServiceTest {
@Autowired
private BookService bookService;
@Test
public void testGetById(){
Book book = bookService.getById(2); //传递参数1会抛出异常
System.out.println(book);
}
@Test
public void testGetAll(){
List all = bookService.getAll();
System.out.println(all);
}
}
【第六步】在static目录中提供index.html页面,跳转到"pages/books.html"
最后:运行引导类即可访问