Liu · Blog

记录点滴,成就未来

0%

校验框架

1.1 校验框架入门

1.1.1 表单校验的重要性

  • 表单校验保障了数据有效性、安全性

image-20200505144306747

数据可以随意输入,导致错误的结果。后端表单校验的重要性。

阅读全文 »

spring整合线程池

搭建spring或者springboot环境;

1.1 配置线程池

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.swagger.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.ThreadPoolExecutor;

/**
* @author laofang
* @description
* @date 2021-06-08
*/
@Configuration
@EnableAsync//线程池加入spring支持
public class ExecutorConfig {

@Bean("asyncServiceExecutor")
public ThreadPoolTaskExecutor asyncServiceExecutor(){
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
//配置核心线程数
executor.setCorePoolSize(5);
//配置最大线程数
executor.setMaxPoolSize(5);
//配置队列大小
executor.setQueueCapacity(99999);
//配置线程池中的线程的名称前缀
executor.setThreadNamePrefix("async-service-");
//等待所有任务结束后再关闭线程池
executor.setWaitForTasksToCompleteOnShutdown(true);
// rejection-policy:当pool已经达到max size的时候,如何处理新任务
// CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
//执行初始化
executor.initialize();
return executor;
}

}
阅读全文 »

健康监控

监控-健康监控服务

目的:能够理解健康监控actuator的作用

解析:

每一个微服务在云上部署以后,我们都需要对其进行监控、追踪、审计、控制等。SpringBoot就抽取了Actuator场景,使得我们每个微服务快速引用即可获得生产级别的应用监控、审计等功能。

阅读全文 »

自定义starter-步骤分析

需求:自定义heima-redis-spring-boot-starter要求:

  • 当导入redis坐标时,SpringBoot自动创建Jedis的Bean。
  • 创建RedisTemplate Bean, 并完成序列化和反序列化操作

步骤:

  1. 创建 heima-redis-spring-boot-starter 模块,添加依赖
  2. 添加配置属性类
  3. 添加配置类(创建 Jedis Bean和RedisTemplate Bean)
  4. 并定义META-INF/spring.factories 文件中,让SpringBoot自动加载
  5. 在测试模块中引入自定义的 heima-redis-spring-boot-starter 依赖,测试获取 Jedis 的Bean,操作 redis。

可以参考 mybatis-spring-boot-starter 实现

阅读全文 »

starter依赖管理机制

目的:通过依赖能了解SpringBoot管理了哪些starter

解析:

  1. 通过依赖 spring-boot-dependencies 搜索 starter- 发现非常多的官方starter,并且已经帮助我们管理好了版本。

  2. 项目中使用直接引入对应的 starter 即可,这个场景下需要的依赖就会自动导入到项目中,简化了繁琐的依赖。

    如果需要修改版本可以有两种方式:

    • 查看spring-boot-dependencies里面规定当前依赖的版本 用的 key
    • 使用Maven依赖管理的就近原则
  3. 引入 starter 不仅仅是帮助我们管理了依赖,还帮我做了很多的默认的配置信息,简化了大量的配置,使用更加的简单。

  4. 所有的场景启动器的底层都依赖 spring-boot-starter

    1
    2
    3
    4
    5
    6
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>2.3.10.RELEASE</version>
    <scope>compile</scope>
    </dependency>

小结:

  • 引入官方starter依赖默认都可以不写版本
  • 如果配置满足您当前开发需要,则默认配置即可
阅读全文 »

数据源自动配置-HikariDataSource

目的:能够使用SpringBoot操作MySQL实现 CRUD 操作

步骤:

  1. 引入jdbc场景依赖
  2. 修改配置文件 application.yml
  3. 创建数据库表
  4. 创建对应的实体类
  5. 单元测试
阅读全文 »

整合Junit4

目的:掌握SpringBoot整合 Junit4 单元测试

步骤:

  1. 引入场景(test)依赖
  2. 编写测试类,添加注解

实现:

pom依赖:

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
阅读全文 »

SpringMVC自动配置概述

目的:掌握SpringBoot对Web MVC的自动化配置支持

解析:

参考官网;介绍如下:

Spring Boot为Spring MVC提供了自动配置,可与大多数应用程序一起很好地工作。

自动配置在Spring的默认值之上添加了以下功能:

  • 包含ContentNegotiatingViewResolverBeanNameViewResolver视图解析器。
  • 支持服务静态资源,包括对WebJars的支持。
  • 自动注册ConverterGenericConverterFormatter
  • 支持HttpMessageConverters
  • 自动注册MessageCodesResolver国际化。
  • 静态index.html欢迎页支持。
  • 定制Favicon网站icon图片支持。
  • 自动使用ConfigurableWebBindingInitializerbean。

如果要保留这些Spring Boot MVC定制并进行更多的MVC定制(拦截器,格式化程序,视图控制器和其他功能),不用@EnableWebMvc注解。使用 @Configuration + WebMvcConfigurer 自定义规则

小结:

  • SpringMVC 有了SpringBoot加持,让开发web应用更加的简单。
阅读全文 »