1.SpringBoot引言


SpringBoot是由Privotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始化搭建以及开发过程.该框架使用了特定的方式进行配置,从而使开发人员不在需要定义模板话的配置.通过这种方式,SpringBoot致力于唉蓬勃发展的快速应用开发领域成为领导者.

也可以这样说:Spring Boot框架可用来做敏捷式开发

Spring Boot(微框架) = Springmvc(控制器)+Spring(项目管理)

2.Spring Boot的特点

  1. 创建独立的Spring应用程序
  2. 嵌入的Tomcat,无需部署War文件 --Spring Boot项目默认的打包方式是Jar,而且自身嵌入Tomcat,可以直接部署运行,而不需要额外的服务器
  3. 简化Maven配置–之前的Spring(Springmvc)项目需要的maven依赖很多,需要自己手动的自己引入,而且可能会导致依赖的冲突
  4. 自动配置的Spring,不需要管理大量的XML配置

3.Spring Boot的约定大于配置

项目目录结构:

项目目录结构
  • 要求有一个全局的入口类,注意存放的位置
  • 要求有一个名为application.yml或者application.properties的核心配置文件

4.Spring Boot环境搭建

创建好之后,我们创建一个handler测试运行Spring Boot.

运行成功!

5.Spring Boot的三种启动方式

  1. 运行启动类的main方法即可启动Spring Boot工程

  1. Spring Boot本身是一个maven工程,那么就可以使用maven的命令来运行Spring Boot工程

使用的命令是 mvn spring-boot:run


  1. 因为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的配置文件格式

  1. yml会根据换行和缩进帮助管理配置文件的所在位置便于维护

当多次书写同一类的配置时,会自动的归类到同一个类别,这时方便管理和维护

  1. yml相对于properties配置文件更加轻量级

yml因为有缩进和换行就去除了那些冗余的代码

注意:

  1. 书写yml配置文件时,一定要严格的遵循换行和缩进
  2. 在填写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项目的热加载

当项目中的配置信息发生更改时,不需要重启项目

  1. 导入依赖
<dependency><groupId>org.springfranework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>
  1. 修改Idea中的配置

之后修改内容后,不需要重新启动项目,只需要将项目重新构建,就可以达到项目的热加载.

11.Spring Boot集成MyBatis

11.1导入依赖

因为是SpringBoot整合MyBatis,需要额外的导入相关的依赖

  1. mysql数据库驱动
  2. druid连接池
  3. mybatis的依赖
  • 注意druid和mybatis的依赖都是使用的是Spring Boot的依赖,而不是单纯的自己的依赖

11.2编写配置文件

  1. 整合Dao层的mybatis,那么首先需要实体类
  2. 准备Mapper接口

配置扫描mapper接口所在的包

在启动类上配置注解

@MapperScan(basepackage=“包路径”)

  1. 准备映射文件

也就使用的是XML的方式完成了SpringBoot的配置

添加yml的配置:因为我们使用了实体类的别名作为映射,而不是全路径,另外使用了驼峰映射

  1. 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

  1. 创建实体类和Mapper接口
  2. 添加MyBatis注解
  3. 配置
  4. 测试

不需要额外的配置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整合分页助手

  1. 导入依赖
  2. 测试使用
    1. 执行分页
    2. 执行查询
    3. 封装pageInfo对象
    4. 输出
@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

  1. 导入依赖

Spring Boot默认不支持JSP,因此我们需要导入JSP的依赖

  1. 创建webapp以及WEB-INFO去存放JSP页面
  2. 指定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