ApplicationContext相关接口架构分析
本文主要基于 Spring 5.0.6.RELEASE 摘要: 原创出处http://cmsblogs.com/?p=todo「小明哥」,谢谢! 在前面 40 篇博客中都是基于 <font style="color:rgb(51, 51, 51);">BeanFactory</font> 这个容器来进行分析的,<font style="color:rgb...
本文主要基于 Spring 5.0.6.RELEASE 摘要: 原创出处http://cmsblogs.com/?p=todo「小明哥」,谢谢! 在前面 40 篇博客中都是基于 <font style="color:rgb(51, 51, 51);">BeanFactory</font> 这个容器来进行分析的,<font style="color:rgb...
单机版中我们用的是Guava Cache,但是这玩意存在集群的时候就凉了,所以我们还是要借助类似Redis、ZooKeeper 之类的中间件实现分布式锁。 本章目标 利用 自定义注解、Spring Aop、Redis Cache 实现分布式锁,你想锁表单锁表单,想锁接口锁接口…. 导入依赖 org.springframework.boot spring-boot-starter-we...
1.实现EmbeddedServletContainerCustomizer接口,并把实现的类纳入到Spring容器中管理 @Componentpublic class MyEmbeddedServletContainerCustomizer implements EmbeddedServletContainerCustomizer { public void customize(C...
重复提交 字面意思就是提交了很多次,这种情况一般都是前端给你挖的坑…. 前段时间在开发中遇到一个这样的问题;前端小哥哥调用接口的时候存在 循环调用 的问题,正常情况下发送一个请求添加一条数据,结果变成了同一时刻并发的发送了 N 个请求,服务端瞬间懵逼的插入了 N 条一模一样的数据,前端小哥哥也不知道问题在哪里(恩…坑就这样挖好了,反正不填坑,气死你) 这时候咋办呢;后端干呗,反正脏活累活...
Spring Boot中自定义注解实现参数校验 在日常开发中, 我们经常需要用到参数校验,而如果在Controller层中对每个参数都手动代码去校验,无疑是非常繁琐且不易于维护的。而javax正好提供了很多常用的校验,如:@NotNull、@NotBlank、@NotEmpty等常用的参数校验注解,我们只需要在对用的参数上添加该注解就可以完成校验。但是还有很多情况是javax中没有提供的,...
前言 介绍了websocket与STMOP以及SockJs使用代码,基本上拿来即可使用。也介绍了2者的区别及个人推荐使用websocket方式。 websocket在Html5里使用,主要目标还是解决服务器能主动向客户端发送消息的功能。也就是全双工的通信方式。 Spring提供了对Websocket的支持,WebSocket API是比较低级的API,但恰恰是我比较中意的方式。因为接近...
针对某些读写比很高的场景,使用本地缓存可以极大提高访问效率。 springboot中对cache做了很好的支持 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifa...
一、前言 使用 Spring+Mybatis 操作 Phoenix 和操作其他的关系型数据库(如 Mysql,Oracle)在配置上是基本相同的,下面会分别给出 Spring/Spring Boot 整合步骤,完整代码见本仓库: Spring + Mybatis + Phoenix SpringBoot + Mybatis + Phoenix 二、Spring + Myba...
参考文章: Spring AOP切面表达式详解: https://blog.csdn.net/xubo_ob/article/details/78182014 Spring AOP中pointcut 表达式详解: https://www.cnblogs.com/rainy-shurun/p/5195439.html 说说 Spring AOP 中 @Aspect 的高级用法: http...
Servlet容器采用多线程来处理请求,提高性能的同时也造成了线程安全问题。要开发线程安全的Servlet应该从一下几个方面进行: 1. 变量的线程安全; 多线程并不共享局部变量,所以我们要尽可能的在Servlet中使用局部变量; 2. 代码块的线程安全; 使用同步块Synchronized,防止可能调用的代码块;但是要注意的是,要尽可能得缩小同步代码的方范围,不要在service方法和...