Springboot知识点概括总结

Springboot知识点简单概括


1.springboot的基本概述

1.1. 什么是springboot?
  springboot是对spring的进一步封装。
1.2. 什么是微服务?
  微服务是一种架构风格,他提倡将一个应用划分成独立的小型服务,每个小型服务都有自己独立的进程,在不同的服务器上运行,每个服务互相独立,服务与服务之间通过HTTP的方式进行通信.
1.3. springboot的优点?
(1)没有xml配置文件,自动配置,简化开发
(2)内置Tomcat容器,简化部署
(3)自动进行依赖的版本控制,避免版本冲突

2.如何编写一个springboot程序

2.1. 引入依赖 parent web

<!--spring-boot-starter-parent整合第三方常用框架的依赖信息-->
    <!-- 添加父级依赖-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>
    <!--spring-boot-starter-web是springboot整合springmvc是Maven的依赖继承关系-->
    <!--web启动器-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

2.2. 定义配置文件
全局配置文件,唯一文件名: application.yml /application.properties

 server:
  port: 8808
  path: /user

2.3. 编写启动类

@SpringBootApplication
public class App{
	public static void main(String[] args){
		SpringApplication.run(App.class,args);
	}
}

3. 注意以下细节?

3.1. @SpringBootApplication注解的作用
  springboot自动配置原理核心@SpringBootApplication
链接:springboot如何实现自动配置
3.2. 为什么要定义parent依赖??
  父级依赖,里面定义了大量的第三方的依赖,方便进行自动配置
3.3. 为什么定义web依赖?
  实现对springMVC进行自动配置。

4.掌握.yml配置文件的语法

4.1. yml语法格式?
  k: v 属性和属性之间要有换行并缩进
4.2. 不同数据在yml文件里面的定义格式?
  字面量,list(set 数组) ;对象;map

server:
  port: 8808
  path: /user
#对象
user:
  name: zhangsan
  age: 18
#行内写法s
user2: {name: zhangsan,age: 18}
#数组(list set)
list:
  - user1
  - user2
  - user3
#行内写法
list2: [user1,user2,user3]
emp:
  empName: tom
  sex: 男
  age: 18
  email: 2571824356@qq.com
#配置文件的占位符
#随机数
#${random.uuid}
#${random.int(18,60)}
#${random.value}
randomdemo: #不能使用驼峰命名,避免启动报错
  id: ${random.uuid}  #取随机的uuid
  age: ${random.int(0,100)}  #取指定范围的随机数
  address: ${random.value}  #获取随机字符串
  name: ${:张三}  #默认值 如果不写 默认值就是张三

4.3. 如何将配置的yml文件中的属性绑定到bean中?
传统的方式: 在spring里面我们可以使用
(1) set方法,
(2)带参数的构造函数
(3) p名称空间
(4)SpringEL表达式
(5)注解(@Value @Resource @Autowired)
spirngboot里面:
(1)@Value
(2)@ConfigurationProperties(prefix=“xxxx”)

@Component
@ConfigurationProperties(prefix="student") //对应yml配置文件的属性名
public class Student{
	//属性
	// Get  Set方法
}

等等…

5.核心注解?

5.1. @ConfigurationProperties(prefix=“属性名”)
详细分析可参照:链接:springboot的配置
5.2. @PropertySource(value = {“classpath:xxxx.properties”})
  导入局部的配置文件.properties
5.3. @ImportResource
  识别XML配置文件( 这个注解是用在启动类上)
  目的:使用XML的方式管理bean
5.4. springboot默认不识别xml,所以我们使用java配置类的方式来管理bean

     /*@Configuration
     public class  类{
           @Bean
           public 被管理的bean的类型  bean的名称(){
                return new 被管理的bean的类型();
           }
     }*/
     @Configuration
     public class  Test{
           @Bean
           public User  user(){
                return new User();
           }
     }

6.springboot整合第三方技术

6.1 整合日志 AOP
6.1.1整合日志
下面只介绍简单步骤,具体内容参照:
链接:springboot与日志
(1)引入log4j依赖

<!-- springboot-log4j -->
<!-- 引入log4j日志依赖-->
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-log4j</artifactId>
     <version>1.3.8.RELEASE</version>
</dependency>

(2)加入日志启动类
(3)导入 日志配置文件 log4j.properties
推荐使用lombok插件
  (1)导入lombok的依赖

<!--lombok插件-->
<dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
</dependency>

  (2)下载lombok插件
6.1.2.整合AOP
(1)加入AOP依赖 AspectJ的依赖
(2)定义目标类
(3)定义切面类

@Aspect
@Component
public class MyAspect{
	//前置增强
	@Before(value-"execution(public * com.yousian.controller.UserController.addUser(..))")
	public void before(){...}
}

6.2 整合thymeleaf模板引擎
  整合的步骤:
(1)引入thymeleaf的启动器

<!--引入thymeleaf依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <version>2.0.6.RELEASE</version>
</dependency>

(2)在HTML页面引入thymeleaf的命名空间

<!DOCTYPE html>
<!--引入thymeleaf的命名空间-->
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

6.3 整合springmvc,扩展SpringMVC的功能?
  在默认的情况下,springboot只是做了springmvc最基本功能的自动配置。如果我们想要使用更多springmvc的功能,我们需要进行扩展.

//如何扩展springmvc的功能?
//配置自定义视图映射
//全面扩展mvc配置
public class MyWebMVC implements WebMvcConfigure{
	//自定义视图
	//注册拦截器
	//类型转换器
}

  6.3.1 springboot默认静态资源的映射规则?
  Springboot默认映射resourse目录下的public,static,resourse,templates
  6.3.2 如何定义拦截器并注册拦截器?
(1) 自定义拦截器

//实现HandlerInterceptor接口
public class MyInterceptor implements HandlerInterceptor{
	//前置拦截
	//后置拦截
	//最终拦截
}

(2) 在MyWebMVC类里面实现注册拦截器的方法

//注册拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //添加拦截器
        registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**")
                .excludePathPatterns("/index.html", "/", "/user/login", "/css/**", "/js/**", "/img/**");
    }

  6.3.3 如何自定义视图?
在MyWebMVC中自定义默认静态资源的映射规则

@Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
        registry.addViewController("/index.html").setViewName("index");
        registry.addViewController("/index").setViewName("index");
        registry.addViewController("/dashboard.html").setViewName("dashboard");
    }

  6.3.4 如何进行异常处理?
(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 {
			/**
			 * 处理异常的方法
			 */
			@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;
			}
		}

6.4 springboot整合mybatis
(1) 引入mybatis的启动器
(2) 编写配置文件(数据源的类型 用户名 密码 url 驱动类 别名)
(3) 定义接口及实现
(4) 定义service
(5) 定义controller


学习尚硅谷视频整理的文档 Spring Boot 1 1 Spring Boot入门 4 1.1 简介 4 1.2 微服务(martin fowler发表了一篇文章) 5 1.3 环境约束 7 1.4 第一个Spring Boot项目(jar):HelloWorld 8 1.5 入门案例详解 11 1.5.1 POM文件 11 1.5.2 主程序类,主入口类 12 1.6 使用Spring Initializer向导快速创建Spring Boot 16 2 Spring Boot配置 18 2.1 配置文件 18 2.2 YML语法 19 2.3 YML配置文件值获取 21 2.4 properties配置文件乱码问题 24 2.5 @ConfigurationProperties与@Value的区别 25 2.6 配置@PropertySource、@ImportResource、@Bean 27 2.7 配置文件占位符 30 2.8 Profile多环境支持 31 2.9 配置文件的加载位置 33 2.10 外部配置加载顺序 36 2.11 自动配置原理 37 2.12 @Conditional派生注解 41 3 Spring Boot与日志 42 3.1 日志框架分类和选择 42 3.2 SLF4j使用 43 3.3 其他日志框架统一转换成slf4j+logback 44 3.4 Spring Boot日志使用 45 3.5 Spring Boot默认配置 47 3.6 指定日志文件和日志Profile功能 52 3.7 切换日志框架(不使用SLF4j+LogBack) 54 4 Spring Boot与Web开发 55 4.1 Web开发简介 55 4.2 静态资源映射规则 56 4.3 引入Thymeleaf 60 4.4 Thymeleaf语法 61 4.5 SpringMVC自动配置原理 67 4.6 SpringBoot扩展与全面接管 70 4.7 如何修改SpringBoot的默认配置 72 4.8 【实验】CRUD操作 73 4.8.1 默认访问首页 73 4.8.2 登录页面国际化 74 4.8.3 登录 80 4.8.4 拦截器进行登录检查 81 4.8.5 实验要求(没按要求做,不想改了!) 82 4.8.6 CRUD-员工列表 83 4.8.7 CRUD-员工修改 86 4.8.8 CRUD-员工添加 87 4.8.9 CRUD-员工删除 88 4.9 错误处理原理&错误页面定制 90 4.10 配置嵌入式Servlet容器(springboot 1.50版本) 97 4.10.1 如何定制和修改Servelt容器的相关配置 97 4.10.2 注册servlet三大组件【servlet,filter,listener】 98 4.10.3 替换为其他嵌入式容器 102 4.10.4 嵌入式servlet容器自动配置原理 103 4.10.5 嵌入式servlet容器启动原理 103 4.11 使用外置的Servlet容器 104 4.11.1 步骤 104 4.11.2 原理 107 5 Spring Boot与Docker(虚拟化容器技术) 110 5.1 简介 110 5.2 核心概念 111 5.3 安装Docker 112 5.4 Docker常用命令&操作 113 5.5 安装MySQL示例 114 6 Spring Boot与数据访问 115 6.1 JDBC 115 6.1.1 实现 115 6.1.2 自动配置原理 116 6.2 整合Durid数据源 117 6.3 整合Mybatis 122 6.3.1 注解版 123 6.3.2 配置文件版 124 6.4 整合SpringData JPA 125 6.4.1 SpringData简介 125 6.4.2 整合 126 7 Spring Boot启动配置原理 128 7.1 启动流程(Springboot 1.50版本) 128 7.1.1 创建SpringApplication对象 129 7.1.2 运行run方法 130 7.1.3 编写事件监听机制 132 8 Spring Boot自定义starters 136 8.1 概述 136 8.2 步骤 137 9 更多Springboot整合示例 144 10 Spring Boot与缓存 145 10.1 JSR107缓存规范 145 10.2 Spring的缓存抽象 146 10.2.1 基本概念 146 10.2.2 整合项目 146 10.2.3 CacheEnable注解 148 10.2.4 Cache注解 150 10.3 整合redis 154 10.3.1 在Docker上安装redis 154 10.3.2 Redis的Template 154 10.3.3 整合(百度) 155
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值