文章目录
1.SpringBoot引言
SpringBoot是由Privotal团队提供的全新框架
,其设计目的是用来简化Spring应用的初始化搭建以及开发过程
.该框架使用了特定的方式进行配置
,从而使开发人员不在需要定义模板话的配置.通过这种方式,SpringBoot致力于唉蓬勃发展的快速应用开发领域成为领导者.
也可以这样说:Spring Boot框架可用来做敏捷式开发
Spring Boot(微框架) = Springmvc(控制器)+Spring(项目管理)
2.Spring Boot的特点
创建独立的Spring应用程序
嵌入的Tomcat,无需部署War文件
--Spring Boot项目默认的打包方式是Jar,而且自身嵌入Tomcat,可以直接部署运行,而不需要额外的服务器简化Maven配置
–之前的Spring(Springmvc)项目需要的maven依赖很多,需要自己手动的自己引入,而且可能会导致依赖的冲突自动配置的Spring,不需要管理大量的XML配置
3.Spring Boot的约定大于配置
项目目录结构:
项目目录结构 |
---|
- 要求有
一个全局的入口类
,注意存放的位置 - 要求有
一个名为application.yml或者application.properties的核心配置文件
4.Spring Boot环境搭建
创建好之后,我们创建一个handler测试运行Spring Boot.
运行成功!
5.Spring Boot的三种启动方式
- 运行启动类的main方法即可启动Spring Boot工程
- Spring Boot本身是一个maven工程,那么就可以使用maven的命令来运行Spring Boot工程
使用的命令是 mvn spring-boot:run
- 因为Spring Boot工程内嵌了Tomcat,那么就可以先把工程打包,然后在windows环境下直接运行
打包使用的命令是:mvn clean package
将打包好的jar包放到桌面(为了方便运行,就可以直接在桌面打开powerShell)
打开powerShell输入命令: java -jar 输入打包好的jar包的名字(可以使用 t补全) 然后运行
- 那么后期我们将写好的Spring Boot项目,也就可以直接打包后放入到Linux的系统中,不需要像之前SSM项目那样额外的下载众多的容器环境
6.Spring Boot常用注解
6.1 @Configuration和@Bean
之前使用SSM开发时,我们需要在XML文件中编写bean标签
但是Spring Boot不推荐使用XML文件
@Configuration
:代表当前类
是一个配置类,相当于beans标签
@Bean
:创建一个实例,放到Spring容器中,相当于bean标签
- id=“方法名|注解中的name属性(优先级更高)”
- class=“方法的返回结果”
6.2@SpringBootApplication
@SpringBootApplication是一个组合注解
@SpringBootApplication是一个组合注解 |
---|
@SpringBootConfiguration的源码
@SpringBootConfiguration的源码 |
---|
发现其实际上就是一个Configuration注解
,也就是说@SpringBootConfiguration也是配置注解,那么那么我们的启动类实际上就是一个配置类
@EnableAutoConfiguration注解
SpringBoot工程运行时,会自动运行一个SpringFactoriesLoader,加载META-INFO/spring.factories配置类(并不会全部加载,而是根据pom.xml文件中导入的依赖
SpringBoot的配置都是可插拔的,可以根据需要开启或者不开启
),通过SpringFactoriesLoader类中的load方法,以for循环的方式一个一个加载
实际上SpringBoot不需要我们编写一些配置文件,是因为在SpringBoot中已经为我们编写好了部分的配置文件,我们可以根据约定来开启即可.这就是SpringBoot的便利之处,同时,因为一些配置是默认的,我们有时候需要适当的做一些修改.
手动关闭自动装配指定内容
@SpringBootApplication(exclude=QuartzAutoConfiguration.class)
@ComponenScan
相当于<context:component-scan basepackage=“包名” />
告诉要扫描的注解的包的位置
扫描的是该类所在包及其类所在的包的子包都会扫描
这也就是为什么我们要在启动类的同级创建包来写我们的代码,因为在启动类中有这个注解,会自动扫描注解,不需要我们在其他的类中多次的配置该注解
7.Spring Boot配置文件格式
默认情况下,Spring Boot给我们提供的是proerties的配置文件格式
Spring Boot也支持yml的配置文件格式,甚至支持json
推荐使用yml的配置文件格式
- yml会根据换行和缩进帮助管理配置文件的所在位置
便于维护
当多次书写同一类的配置时,会自动的归类到同一个类别,这时方便管理和维护
- yml相对于properties配置文件更加轻量级
yml因为有缩进和换行就去除了那些冗余的代码
注意:
- 书写yml配置文件时,一定要严格的遵循换行和缩进
- 在填写value时,一定要在:(冒号)后加上一个空格
8.Spring Boot的多环境配置
Spring Boot为我们部署项目时提供了一个多环境,也就是说在开发的时候可以指定多环境,在部署项目时,可以选择其中一个环境来部署
在applocation.yml文件中添加一个配置项:
spring:
profiles:
active:具体的环境名
在resource目录下,创建多个application-环境名.yml文件即可
当项目启动时,就会根据application.yml中的配置,选择具体的环境去运行项目
在部署工程时:
通过java -jar jar文件 --spring.profiles.active=环境名
这样在部署项目时,就不需要修改配置文件,直接指定多个环境,在部署时选择其中一个
9.在外部使用配置文件的信息
第一种方式:
假如在yml配置文件中有这样的定义:
picPath: D:\xxx\yyy
那么我们要在类中使用配置文件中的信息,这时使用:
@Value("${picPath}")
private String picPath1;
这样就在java代码中使用picPath1接收了key值为picPath的值
当有多个相同的头的配置信息(且是多个时),我们使用第一种方式就有点麻烦,使用第二种方式:编写了大量的自定义配置,且具有统一的前缀时,可以采用如下的方式
比如:
aliyun:
aaaa:aaaaa
bbbb:bbbbb
cccc:ccccc
dddd:ddddd
创建一个类
@ConfigurationProperties(prefix=“aliyun”)
public class AliyunProperties{
private String aaaa;
private String bbbb;
…
并提供get和set方法
}
然后在需要使用aliyun配置文件的信息的地方,把之前创建的获取aliyun配置文件的类注入进去,就可以使用了
10.Spring Boot项目的热加载
当项目中的配置信息发生更改时,不需要重启项目
- 导入依赖
<dependency>
<groupId>org.springfranework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
- 修改Idea中的配置
之后修改内容后,不需要重新启动项目,只需要将项目重新构建,就可以达到项目的热加载.
11.Spring Boot集成MyBatis
11.1导入依赖
因为是SpringBoot整合MyBatis,需要额外的导入相关的依赖
- mysql数据库驱动
- druid连接池
- mybatis的依赖
- 注意druid和mybatis的依赖都是使用的是Spring Boot的依赖,而不是单纯的自己的依赖
11.2编写配置文件
- 整合Dao层的mybatis,那么首先需要
实体类
- 准备Mapper接口
配置扫描mapper接口所在的包
在启动类上配置注解
@MapperScan(basepackage=“包路径”)
- 准备映射文件
也就使用的是XML的方式完成了SpringBoot的配置
添加yml的配置:
因为我们使用了实体类的别名作为映射,而不是全路径,另外使用了驼峰映射
- yml配置中编写连接数据库的信息
mybatis:
#扫描映射文件位置
mapper-locations: classpath:mapper*.xml
#配置别名
type-aliases-package: per.leiyu.firstspringboot.entity
#开启驼峰映射
configuration: map-underscore-to-camel-case: true
yml配置中编写连接数据库的信息
spring:
datasource:
driver-class-name: Driver.mysql.cj.jdbc.Driver
url: jdbc:mysql///air?serverTimeZone=UTC
username: root
password: 123456
type: com.alibaba.druid.pool.DruidDataSource
12使用注解的方式整合MyBatis
使用Spring Boot的注解的方式整合MyBatis
- 创建实体类和Mapper接口
- 添加MyBatis注解
- 配置
- 测试
不需要额外的配置XML相关的配置(XML文件的书写和有关mapper.xml文件的扫描都不要配置)
使用Spring Boot的注解方式整合,Spring Boot提供了很多的注解方便使用
@Delete
,@Select
,@Updata
,@Insert
,但是仍然需要在启动类中添加@mapperScan
注解,保证扫描mapper接口,不需要mapper.xml文件
- 使用注解的方式整合mayatis,适合简单的sql语句
- 当有复杂的sql语句时,我们推荐仍然使用mapper.xml的方式整合
- Spring Boot支持
同时使用注解和XML文件的方式整合mybatis
创建测试的简单方法:
在需要测试的类上右键—>创建测试.选择需要测试的方法---->测试.
设置测试的启动类为public,然后让创建的测试类继承测试的启动类即可.
12.1配置日志,查看执行的sql语句
就是把mapper包下(里面全是mapper接口)接口全部以DEBUG的方式输出就可以看到执行的SQL语句了
logging:
level: per.leiyu.firstboot.mapper: DEBUG
13.Spring Boot整合分页助手
- 导入依赖
- 测试使用
- 执行分页
- 执行查询
- 封装pageInfo对象
- 输出
@Test
public void findBypage(){
//执行分页
PageHelper.startPage(1,5);
//执行查询
List<Air> list = airMapper.findAll();
//封装PageInfo对象
PageInfo<Air> pageInfo = new PageInfo<>(list);
for(Air air : PageInfo.getList()){
System.out.println(air);
}
}
14.Spring Boot整合JSP
- 导入依赖
Spring Boot默认不支持JSP,因此我们需要导入JSP的依赖
- 创建webapp以及WEB-INFO去存放JSP页面
- 指定view的前缀和后缀
默认是也webapp下找JSP的页面,我们需要指定前缀,因为是jsp页面,我们为其指定后缀
spring:
mvc:
view:
prefix: /WEB-INFO/
suffix: .jsp
for(Air air : PageInfo.getList()){
System.out.println(air);
}
}
# 14.Spring Boot整合JSP
1. **导入依赖**
> Spring Boot默认不支持JSP,因此我们需要导入JSP的依赖
2. 创建webapp以及WEB-INFO去存放JSP页面
3. 指定view的前缀和后缀
> 默认是也webapp下找JSP的页面,我们需要指定前缀,因为是jsp页面,我们为其指定后缀
```yml
spring:
mvc:
view:
prefix: /WEB-INFO/
suffix: .jsp