1.springboot的基本概述
**什么是springboot?**
springboot就是spring的一个增强和封装
**什么是微服务?**
是一种基本的架构,用spring技术来实现的
**springboot的优点?**
容易上手,提供了一系列的大型项目和通用的非业务性功能
没有代码生成,也不需要xml配置,可以避免大量的maven导入和各版本冲突
也没有单独的web服务器需求
2.如何编写一个springboot程序
引入依赖 parent web
定义配置文件 application.yml application.properties
编写启动类,通常使用mian方法启动
3. 注意哪些细节?
1.feign调用时,方法参数的@RequestParam里面必须要有value值
2.feign调用时,方法的@RequestMapping里面必须指定method,而且只能指定一个调用方式
3.如果方法的返回值是对象,对象必须要有无参构造函数
**@SpringBootApplication注解的作用**
它是一个核心注解,它包含的三个注解分别是
SpringBootConfiguration: 实现配置文件的功能
EnableAutoConfiguration: 打开配置功能
ConponentScan: Spring组件扫描
**springboot自动配置原理**
使用注解EnableAutoConfiguration给容器导入了META-INF/spring.factories里面定义了自动
配置的类,每一个自动配置类都结合了对应的Properties.java读取配置文件进行自动配置功能
**为什么要定义parent依赖??**
这个依赖可以用也可以不用
这个依赖中定义了java编译版本为1.8,使用了UTF-8格式编码,也执行了打包操作的配置,自动化
资源过滤等等...
这个依赖还继承了spring-boot-dependencies,这里面定义了版本,也正因为这个依赖我们在写的
时候不需要写版本号了
**为什么定义web依赖??**
为了方便,我们都知道web项目在启动时需要部署到服务器上,然后启动web服务器真正运行到我们
的系统,而springBoot搭建的系统却是可以直接使用mian方法运行,这样大大节省了开发时间提高
我们的开发效率
4.掌握.yml配置文件的语法格式
key: value 属性和属性之间要有换行并缩进
不同数据在yml文件里面的定义格式?
对象
user:
name: zhangsan
age: 23
list(set 数组)
list:
- a
- b
也可以
list: [a,b,c]
map
map: {k1: k1,v2: v2}
5.核心注解?
@ConfigurationProperties
绑定属性注入
@PropertySource
导入局部的配置文件.properties
@ImportResource
识别XML配置文件,用XML的方式管理bean
在springboot中默认是不识别xml,所以我们使用java配置类的方式来管理bean
@Configuration
定义配置类,被注解的类内部包含一个或多个被bean注解打的方法,这些方法将会被进行扫描,并用于构建
bean定义,初始化spring容器
6.springboot整合第三方技术
**6.1 整合日志 AOP**
导入Aop的依赖spring-boot-starter-aop
定义一个目标类
定义一个切面类 用注解@Asoect @Comonent 交给spring容器管理
在切面类里面定义一个切点
**6.2 整合thymeleaf模板引擎**
在pom.xml文件引入thymeleaf
在application.properties(application.yml)文件中配置thymeleaf
新建编辑模板文件,在resources文件夹下的templates目录,用于存放HTML等模板文件
使用Thymeleaf模板引擎时,必须在html文件上方添加<html lang="en" xmlns:th="http://www.thymeleaf.org"> 代码使用支持Thymeleaf。
**6.3 整合springmvc,扩展SpringMVC的功能?**
在之前的springboot中编写一个配置类(@Configuration),
是WebMvcConfigurerAdapter类型进行扩展配置SpringMvc中的自定义属性配置,
展SpringMvc的属性就可以实现WebMvcConfigurer接口。实现对应的方法就可以了。
**springboot默认静态资源的映射规则?**
如果我们没有自定义静态文件夹时,就会默认在classpath:/META-INF/resources中找
如果定义了自定义文件夹时就会默认就会失效
**如何定义拦截器并注册拦截器?**
贴上@Configuration定义配置类,实现WebMvcConfigurer接口
@Bean配合@Configuration使用,将拦截器交给spring管理
**如何自定义视图?**
定义一个配置类(记得加注解@Configuration),实现WebMvcConfigurer接口
使用addViewControllers方法即可
**如何进行异常处理?**
先定义一个基类 BusinessException,使用@ControllerAdvice注解声明的表示统一异常处理
@ExceptionHandler(value = Exception.class)这个注解写在方法上表示,该方法处理哪个异常.
也就是说这个异常处理类中,可以获取所有的异常都拿excepion来接收,也可以明确指定哪个异常,
跟上下顺序无关,有明确指定的异常会找明确指定的,没有就找父类.
**6.4 springboot整合mybatis**
添加相关的两个dao层依赖mysql的connector和mybatis的starter
在启动类上加上@SpringBootApplication注解,那些Controller啊,@Service啊还有MyBatis的注解@Mapper什么的都可以被扫描到了