![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SpringBoot
文章平均质量分 67
Janson_Lin
前中科院开发工程师!
展开
-
HandlerInterceptor中的preHandle、postHandle与afterCompletion
HandlerInterceptor简介拦截器我想大家都并不陌生,最常用的登录拦截、或是权限校验、或是防重复提交、或是根据业务像12306去校验购票时间,总之可以去做很多的事情。我仔细想了想这里我分三篇博客来介绍HandlerInterceptor的使用,从基本的使用、到自定义注解、最后到读取body中的流解决无法多次读取的问题。1、定义实现类定义一个Interceptor 非常简单方式也有几种,我这里简单列举两种1、类要实现Spring 的HandlerInterceptor 接口2、原创 2021-09-23 09:12:36 · 2496 阅读 · 0 评论 -
看看SpringBoot初始化时可以做的事情!
我们经常需要在容器启动的时候做一些钩子动作,比如注册消息消费者,监听配置等,今天就总结下SpringBoot留给开发者的7个启动扩展点。容器刷新完成扩展点1、监听容器刷新完成扩展点ApplicationListener<ContextRefreshedEvent>基本用法熟悉Spring的同学一定知道,容器刷新成功意味着所有的Bean初始化已经完成,当容器刷新之后Spring将会调用容器内所有实现了ApplicationListener<ContextRefreshedEv原创 2021-04-01 17:00:32 · 164 阅读 · 0 评论 -
基于springboot的mysql实现读写分离
前言首先思考一个问题:在高并发的场景中,关于数据库都有哪些优化的手段?常用的有以下的实现方法:读写分离、加缓存、主从架构集群、分库分表等,在互联网应用中,大部分都是读多写少的场景,设置两个库,主库和读库。主库的职能是负责写,从库主要是负责读,可以建立读库集群,通过读写职能在数据源上的隔离达到减少读写冲突、释压数据库负载、保护数据库的目的。在实际的使用中,凡是涉及到写的部分直接切换到主库,读的部分直接切换到读库,这就是典型的读写分离技术。本篇博文将聚焦读写分离,探讨如何实现它。主从同步..原创 2021-01-27 09:16:57 · 143 阅读 · 2 评论 -
贼厉害,手撸的 SpringBoot 缓存系统,性能杠杠的!
缓存是最直接有效提升系统性能的手段之一。个人认为用好用对缓存是优秀程序员的必备基本素质。本文结合实际开发经验,从简单概念原理和代码入手,一步一步搭建一个简单的二级缓存系统。一、通用缓存接口1、缓存基础算法(1)、FIFO(First In First Out),先进先出,和OS里的FIFO思路相同,如果一个数据最先进入缓存中,当缓存满的时候,应当把最先进入缓存的数据给移除掉。(2)、LFU(Least Frequently Used),最不经常使用,如果一个数据在最近一段时间内使用次数很少,转载 2020-11-30 11:42:06 · 149 阅读 · 0 评论 -
CommandLineRunner或者ApplicationRunner接口
前言CommandLineRunner、ApplicationRunner 接口是在容器启动成功后的最后一步回调(类似开机自启动)。CommandLineRunner接口CommandLineRunner官方doc:Interface used to indicate that a bean should run when it is contained within a SpringApplication. Multiple CommandLineRunner beans can b原创 2020-07-24 10:16:50 · 164 阅读 · 0 评论 -
【Nacos】注册中心(二)
一、版本问题很多人开始整合spring cloud和springboot的时候,会出现版本的的问题。现在推荐使用官方推荐版本整合问题。地址:https://start.spring.io/actuator/info 官方推荐二、整合一.新建一个cloud父工程二.父工程POM这里我们使用的是F版本的cloud<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apac.原创 2020-06-04 15:57:34 · 273 阅读 · 1 评论 -
SpringBoot 基于注解全局日期格式化
目录前言教程小结前言根据官方文档Custom JSON Serializers and Deserializers,想要接管Jackson的JSON的序列化和反序列化,只需通过注解@JsonComponent来声明其静态内部类即可。教程首先根据项目要求提供自定义的日期序列化器和反序列化器,其中包括: DateJsonSerializerextendsJsonSerializer<Date>表示将Date格式化为日期字符串。 DateJ...原创 2020-05-19 15:18:47 · 345 阅读 · 0 评论 -
SpringBoot停止服务的几种优雅姿态
在使用Spring Boot的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是kill -9 直接把程序进程杀掉,这样程序不会执行优雅的关闭。而且一些没有执行完的程序就会直接退出。我们很多时候都需要安全的将服务停止,也就是把没有处理完的工作继续处理完成。比如停止一些依赖的服务,输出一些日志,发一些信号给其他的应用系统,这个在保证系统的高可用是非常有必要的。那么咱们就来看一下几种停止SpringBoot的方法。第一种就是 SpringBoot 提供的actuator的功...原创 2020-05-14 14:15:07 · 3822 阅读 · 12 评论 -
springboot 热部署
使用spring提供的devtoolsSpring Boot提供了一个名为spring-boot-devtools的模块来使应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。虽然平时开发web项目过程中,改动项目启重启总是报错;但springBoot对调试支持很好,修改之后可以实时生效,需要添加以下的配置:<dependencies> <...原创 2019-12-09 15:58:59 · 172 阅读 · 0 评论 -
Spring data jpa 复杂化查询
一.Spring data jpa 简介首先JPA是Java持久层API,由Sun公司开发,希望整合ORM技术,实现天下归一.诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,目前也是在按照这个方向发展,但是还没能完全实现。在ORM框架中,Hibernate是一支很大的部队,使用很广泛,也很方便,能力也很强,同时Hibernate也是和JPA整合的比较良好,我们可以认为J...原创 2019-10-30 14:04:26 · 365 阅读 · 0 评论 -
spring HandlerMethodArgumentResolver 自定义参数解析
自定义解析器需要实现HandlerMethodArgumentResolver接口,HandlerMethodArgumentResolver接口包含两个接口函数:public interface HandlerMethodArgumentResolver { boolean supportsParameter(MethodParameter var1); @Nullabl...原创 2019-10-28 16:59:13 · 321 阅读 · 0 评论 -
Spring MVC中的拦截器/过滤器HandlerInterceptorAdapter的使用
一般情况下,对来自浏览器的请求的拦截,是利用Filter实现的而在Spring中,基于Filter这种方式可以实现Bean预处理、后处理。比如注入FilterRegistrationBean,然后在这个Bean上传递自己继承Filter实现的自定义Filter进入即可。而Spring MVC也有拦截器,不仅可实现Filter的所有功能,还可以更精确的控制拦截精度。Spring MV...原创 2019-10-28 16:44:29 · 471 阅读 · 0 评论 -
SpingBoot —— 多线程
Spring 通过任务执行器(TaskExecutor)来实现多线程和并发编程。使用ThreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor。而实际开发中任务一般是非阻塞的,即异步的,所有我们在配置类中通过@EnableAsync开启对异步任务的支持,并通过在实际执行的Bean的方法中使用@Async注解来声明其是一个异步任务。一、配置类import o...原创 2019-10-24 08:56:46 · 230 阅读 · 0 评论 -
SpringBoot —— AOP注解式拦截与方法规则拦截
AspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法,所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。 SpringBoot中AOP的使用方式主要有两种:注解式拦截与方法规则拦截,具体使用如下文所示。一、创建一个简单springboot 2.0.8项目,添加aop依赖<dependency> ...原创 2019-10-23 11:45:43 · 522 阅读 · 0 评论 -
SpringBoot -- 事件(Application Event Listener)
Spring的事件为Bean与Bean之间的消息通信提供了支持,当一个Bean处理完一个任务之后,希望另外一个Bean知道并能做相应的处理,这时我们就需要让一个Bean监听当前Bean所发送的事件。 Spring的事件需要遵循如下流程:自定义事件,集成ApplicationEvent。 定义事件监听器,实现ApplicationListener。 使用容器发布事件。一、自定义事件...原创 2019-10-23 11:32:58 · 258 阅读 · 0 评论 -
Spring Boot常用注解和原理整理
一、启动注解 @SpringBootApplication@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters = {...原创 2019-10-22 11:18:15 · 202 阅读 · 0 评论 -
springboot2.0整合logback日志(详细)
一、背景近期自己的项目想要一个记录日志的功能,而springboot本身就内置了日志功能,然而想要输入想要的日志,并且输出到磁盘,然后按天归档,或者日志的切分什么的,自带的日志仅仅具有简单的功能,百度了一番,总结如下,适合大多数的应用场景二、介绍springboot的pom文件都会引一个parent <parent> <groupId>org.s...原创 2019-10-11 10:07:13 · 277 阅读 · 0 评论