springboot总结
一 .1.springboot的基本概述
1.1 为什么要用springboot
和传统的SSM相比,无需大量的配置(约定大于配置)
对依赖的版本能够进行有效的管理,避免了依赖的版本不兼容的情况
内置的tomcat容器,启动 部署方便
…
1.2 什么是springboot
本质上就是spring,对原生的spring进行封装。
1.3 微服务:
微服务是一种架构风格,他提倡将一个应用划分成独立的小型服务,每个小型服务都有自己独立的进程,在不同的服务器上运行,每个服务互相独立,
服务与服务之间通过HTTP的方式进行通信.
1.4 如何编写一个springboot程序?
如何编写一个springboot程序?
1.4.1 引入相关的依赖 spring-boot-starter-parent spring-boot-starter-web
1.4.2 定义配置文件 application.yml或者application.properties server.port
1.4.3 定义启动类
@SpringBootApplication
public class App{
public static void main(String[] args){
SpringApplication.run(App.class,args);
}
}
1.4.4 需要注意的事项:
什么是 spring-boot-starter-parent 父级依赖,里面定义了大量的第三方的依赖,方便进行自动配置
spring-boot-starter-web 对springMVC进行自动配置。
@SpringBootApplication 注解
@SpringBootConfiguration 声明当前类是一个配置类
@ComponentScan 开启包扫描
@EnableAutoConfiguration 开启自动配置
SpringBoot的配置文件 .yml .properties文件 全局的配置文件名称固定 application
1.5 详细了解yml配置文件
1.5.1 语法格式:
k: v
属性名称之间如果存在层级关系,系统换行并缩进。
user:
name: eric
1.5.2 不同数据类型的定义格式
字面量 name: sunny age: 12 flag: true
对象 person:
name: eric
address: CHN
行内写法: person: {name: eric,address: CHN}
list、数组、set
list:
- abc
- bcd
- efg
行内写法: list: [abc,bcd,efg]
map: map:{k1: v1,k2: v2}
1.5.3 如何将配置的yml文件中的属性绑定到bean中?
传统的方式: 在spring里面我们可以使用 set方法,带参数的构造函数 p名称空间 SpringEL表达式 注解(@Value @Resource @Autowired)
spirngboot里面:
@Value
@Component
@ConfigurationProperties(prefix="student")
public class Student{
//属性
// Get Set方法
}
1.5.4 其他注解: @PropertySource 导入局部的配置文件
@ImportReSource 导入XML配置文件 这个注解是用在启动类上
在springboot中我们使用java配置来管理bean,不推荐使用XML的方式管理bean.
如何使用java配置类来管理bean?
@Configuration
public class MyConfig{
@Bean
public Student student(){
return new Student();
}
}
1.5.5 springboot整合日志 AOP
整合日志: 加入日志启动类
导入 日志配置文件 log4j.properties
推荐使用lombok插件
导入lombok的依赖
下载lombok插件
整合AOP:
加入AOP依赖 AspectJ的依赖
定义目标类
定义切面类
@Aspect
@Component
public class MyAspect{
@Before(value-"execution(public * com.yousian.controller.UserController.addUser(..))")
public void before(){}
}
1.5.6 springboot扩展springmvc的默认功能
在默认的情况下,只是做了springmvc最基本功能的自动配置。如果我们想要使用更多springmvc的功能,我们需要进行扩展
如何扩展springmvc的功能?
public class MyWebMVC implements WebMvcConfigure{
//自定义视图
//注册拦截器
//类型转换器
}
1.5.7 在springboot中如何定义拦截器?
public class MyInterceptor implements HandlerInterceptor{
//前置拦截
//后置拦截
//最终拦截
}
在MyWebMVC类里面实现注册拦截器的方法
1.5.8 在springboot中如何处理异常?
1.默认处理规则。如果后台资源出来了异常,在默认的情况下,会去templates目录寻找error.html的资源
更细致的处理方式:
在templates目录下面创建error目录,在error目录里面,以异常代码命名文件 404.html 500.html
2.@ExceptionHandler注解处理(只能处理当前的controller类里面的异常)
在controller类里面进行处理
// 处理算术异常
@ExceptionHandler(value = {java.lang.ArithmeticException.class})
public ModelAndView handleArithmeticException(Exception e){
ModelAndView mv = new ModelAndView();
mv.addObject(“error”,e.toString());//向页面展示错误信息
mv.setViewName(“error1”);
return mv;
}
3.全局处理异常@ControllerAdvice + @ExceptionHandler处理
定义一个异常处理类
@ControllerAdvice //标识当前类是一个全局异常处理类
public class GlobalException {
// 处理算术异常
@ExceptionHandler(value = {java.lang.ArithmeticException.class})
public ModelAndView handleArithmeticException(Exception e){
ModelAndView mv = new ModelAndView();
mv.addObject(“error”,e.toString());//向页面展示错误信息
mv.setViewName(“error1”);
return mv;
}
}
4.使用SimpleMappingExceptionResolver来处理(不能显示异常的具体信息)
首先需要将SimpleMappingExceptionResolver类注入到spring容器;
@Configuration
public class GlobalExceptionHandler {
@Bean
public SimpleMappingExceptionResolver getExceptionResolver(){
SimpleMappingExceptionResolver resolver = new SimpleMappingExceptionResolver();
Properties properties = new Properties();
/**
* 参数1:处理的具体的异常的类型
* 参数2:处理异常需要跳转到的视图
/
properties.put(“java.lang.NullPointerException”,“error3”);
properties.put(“java.lang.ArithmeticException”,“error3”);
properties.put(“java.lang.ArrayIndexOutOfBoundsException”,“error3”);
resolver.setExceptionMappings(properties);
return resolver;
}
}
5.HandlerExceptionResolver 来进行全局异常处理
定义一个类,实现HandlerExceptionResolver 接口即可
public class MyExceptionReslover implements HandlerExceptionResolver {
/*
* 处理异常的方法
* @param httpServletRequest
* @param httpServletResponse
* @param o
* @param ex
* @return
*/
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,
Object o, Exception ex) {
ModelAndView mv = new ModelAndView();
// 判断不同异常类型,做不同视图跳转
if (ex instanceof ArithmeticException) {
mv.setViewName(“error4”);
}
if (ex instanceof NullPointerException) {
mv.setViewName(“error5”);
}
mv.addObject(“error”, ex.toString());
return mv;
}
}
1.5.9 springboot整合模板引擎 thymeleaf
引入thymeleaf的启动器
在HTML页面引入thymeleaf的命名空间
1.5.10 springboot整合mybatis
引入mybatis的启动器
编写配置文件(数据源的类型 用户名 密码 url 驱动类 别名)
定义接口及实现
定义service
定义controller