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环境搭建




运行成功!
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**是一个组合注解

@SpringBootConfiguration的源码

发现其实际上就是一个Configuration注解,也就是说@SpringBootConfiguration也是配置注解,那么那么我们的启动类实际上就是一个配置类
@EnableAutoConfiguration注解
SpringBoot工程运行时,会自动运行一个SpringFactoriesLoader,加载META-INFO/spring.factories配置类(并不会全部加载,而是根据pom.xml文件中导入的依赖SpringBoot的配置都是可插拔的,可以根据需要开启或者不开启),通过SpringFactoriesLoader类中的load方法,以for循环的方式一个一个加载
实际上SpringBoot不需要我们编写一些配置文件,是因为在SpringBoot中已经为我们编写好了部分的配置文件,我们可以根据约定来开启即可.这就是SpringBoot的便利之处,同时,因为一些配置是默认的,我们有时候需要适当的做一些修改.
手动关闭自动装配指定内容 @SpringBootApplication(exclude=QuartzAutoConfiguration.class)
@ComponenScan
相当于
这也就是为什么我们要在启动类的同级创建包来写我们的代码,因为在启动类中有这个注解,会自动扫描注解,不需要我们在其他的类中多次的配置该注解
7.Spring Boot配置文件格式
默认情况下,Spring Boot给我们提供的是proerties的配置文件格式 Spring Boot也支持yml的配置文件格式,甚至支持json
推荐使用yml的配置文件格式
- yml会根据换行和缩进帮助管理配置文件的所在位置
便于维护
当多次书写同一类的配置时,会自动的归类到同一个类别,这时方便管理和维护
2.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>
2.修改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=“包路径”) 3. 准备映射文件 也就使用的是XML的方式完成了SpringBoot的配置 添加yml的配置:因为我们使用了实体类的别名作为映射,而不是全路径,另外使用了驼峰映射 4. yml配置中编写连接数据库的信息
mybatis:#扫描映射文件位置mapper-locations: classpath:mapper*.xml#配置别名type-aliases-package: per.leiyu.firstspringboot.entity#开启驼峰映射configuration: map-underscore-to-camel-case: true
yml配置中编写连接数据库的信息
pring:datasource:driver-class-name: Driver.mysql.cj.jdbc.Driverurl: jdbc:mysql///air?serverTimeZone=UTCusername: rootpassword: 123456type: 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.配置application.yml
1.导入依赖
<!-- pagehelper --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.3.1</version></dependency>
2.配置application.yml
# 分页框架pagehelper:#配置数据库类型helperDialect: mysql#3.3.0版本可用 - 分页参数合理化,默认false禁用#启用合理化时,如果pageNum<1 会查询第一页,如果pageNum>pages会查询最后一页#禁用合理化时,如果pageNum<1 或pageNum>pages会返回空数据reasonable: true#是否支持接口参数来传递分页参数,默认falsesupportMethodsArguments: true#3.5.0版本可用 - 为了支持startPage(Object params)方法#增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值#可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值params: count=countSql
3.service层控制逻辑
@Overridepublic PageInfo<Hotevents> queryLimt(String search, Integer start, Integer pageSize) {PageHelper.startPage(start, pageSize);List<Hotevents> hotevents = hoteventsDao.queryLimt(search);return new PageInfo<>(hotevents, pageSize);}
4.Controller层返回数据
@ResponseBody@GetMapping("/api/getHotEventsList")public Map getHotEventsList(Integer curPage,Integer pageSize,String search){HashMap<String, Object> hashMap = new HashMap<>();PageInfo<Hotevents> pageInfo = this.hoteventsService.queryLimt(search, curPage, pageSize);hashMap.put("list",pageInfo.getList());//返回listhashMap.put("pageNum",pageInfo.getPageNum());//返回当前页数hashMap.put("pages",pageInfo.getPages());//返回总页数return hashMap;}
14.Spring Boot整合JSP
1.导入依赖
Spring Boot默认不支持JSP,因此我们需要导入JSP的依赖
2.创建webapp以及WEB-INFO去存放JSP页面
3.指定view的前缀和后缀
默认是也webapp下找JSP的页面,我们需要指定前缀,因为是jsp页面,我们为其指定后缀
spring:mvc:view:prefix: /WEB-INFO/suffix: .jsp
for(Air air : PageInfo.getList()){System.out.println(air);}
# 14.Spring Boot整合JSP1. **导入依赖**> Spring Boot默认不支持JSP,因此我们需要导入JSP的依赖2. 创建webapp以及WEB-INFO去存放JSP页面3. 指定view的前缀和后缀> 默认是也webapp下找JSP的页面,我们需要指定前缀,因为是jsp页面,我们为其指定后缀```ymlspring:mvc:view:prefix: /WEB-INFO/suffix: .jsp
15.thymeleaf的使用
1.导入依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>
2.页面放在 templates包

3.controller层返回
@GetMapping("/index")public String index() {return "index";}
16.跳转jsp

