![](https://img-blog.csdnimg.cn/9560803c957544d382dfd36d239331d8.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring
文章平均质量分 67
Spring
【非典型Coder】
混迹IT行业十来年,拧过螺丝做过架构,当过讲师,闲暇之余写写文章~
展开
-
Bean 的生命周期之初始化
之前的文章《Spring IOC 中循环依赖,两幅图搞定》中介绍了 bean 的创建过程:1. 创建 createBean2. populateBean3. initializeBean第一步,通过反射拿到构造方法创建 bean; 第二步,填充 bean 的属性,如果发现被依赖的属性不存在则会首先创建被依赖属性,然后填充,里面涉及的循环依赖的问题已经讲过;第三步初始化是我们今天来聊的话题。先看代码: protected Object initializeBean(final Str原创 2022-03-08 15:51:56 · 1124 阅读 · 0 评论 -
自定义 HandlerInterceptor 使用注意事项
目录HandlerInterceptor 是什么HandlerInterceptor 使用HandlerInterceptor 使用注意事项HandlerInterceptor 是什么hander 的拦截器,用来拦截handler 的执行。执行时机:handdlerAdaptor 调用 handler 后,DispatcherServlet 返回视图前。可以用来做权限拦截,返回后的统一处理等,比如添加统一的返回数据(用户登录后的信息)。HandlerInterceptor原创 2021-11-23 11:49:20 · 468 阅读 · 0 评论 -
日常开发,每张表中的operator、gmt_create、gmt_modified,你是怎么处理的?
日常开发的数据库设计环节,相信大家都会有这样一种感受,每张表都会有这些基本信息, creator_id, creator, created_at, updater_id, updater, updated_at ,我暂且称为元数据(MetaInfo)吧。几乎每张表都会有这些字段,而且在你编写CRUD 操作代码的时候,都需要对这些字段进行赋值或修改。从我个人感觉,这会带来至少两点问题:第一、代码重复率较高,第二、容易出错,一不小心忘了修改某个字段,测试人员就会给你提个 bug。所以,我就通过 AO..原创 2021-11-06 14:12:41 · 2150 阅读 · 0 评论 -
Spring 事务与自定义AOP 是如何执行的?
我们知道 事务是基于 AOP 实现的,如果我们再项目中用到了事务,同时又需要做一些自定义的 AOP 操作,这个时候会不会冲突呢?先说结论:不会冲突,并且事务会把自定义的AOP 操作也包含在内。这事就得从 CglibAopProxy 聊起,spring 在 bean 初始化时会给使用了事务的对象创建代理。 public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) ..原创 2021-11-02 19:08:42 · 466 阅读 · 0 评论 -
Tomcat 如何加载Spring?
1. Tomcat 提供的接口SCIs 通过SPI 方式被注册和使用,所有MVC 框架必须包含 META-INF/services/javax.servlet.ServletContainerInitializer 文件,并且在里面指定自己的实现类。public interface ServletContainerInitializer { /** * Receives notification during startup of a web application of t原创 2021-08-17 18:12:50 · 237 阅读 · 2 评论 -
一看就懂,Spring IOC 三级缓存如何解决循环依赖
目录Bean 创建时机Spring 创建 bean 三步曲三级缓存Bean 创建时机AbstractApplicationContext.javapublic void refresh() { finishBeanFactoryInitialization(beanFactory);}protected finishBeanFactoryInitialization(beanFactory) { // Instan...原创 2021-08-13 19:21:30 · 536 阅读 · 1 评论 -
深入@Transactional 事务源码
Spring 作为一个整合框架,整合了数据访问层,并且还提供了数据访问层的事务支持。这也是开发者使用 Spring 框架开发的原因之一。Spring 支持声明式事务和编程式事务。编程式事务比较简单,而声明式事务相对来说封装的比较抽象并且实际工程中使用较多的也是这种,所以本文详细介绍声明式事务的原理。声明式事务,说白了就是在你需要事务管理的地方,添加一个@Transactional 用着非常简单非常爽,但是底层Spring 却做了很多工作。话不多说,show code:1. 通过自动配置,..原创 2021-07-25 22:30:39 · 437 阅读 · 0 评论 -
代码详解 AOP 概念
谈到Spring,相信只要从事Java开发的同学都知道Spring的两大核心:AOP 和IOC,本文只谈AOP。AOP的概念,相信很多人面试都被问到过,但每次都弄的不太清楚,比如:什么是切面,什么是增强,什么是切点...面对如此晦涩难懂的名词,本文尝试通过代码帮助大家理解并记忆这些概念,为了便于理解,这里使用xml配置方式,实际工作中用的比较多的还是注解方式。话不多说,撸代码:<?xml version="1.0" encoding="UTF-8"?><beans...原创 2021-07-25 14:58:12 · 144 阅读 · 0 评论 -
Springboot 2.x 踩坑
springboot1.x 时期我们需要手动编写characterEncodingFilter,通常这么做: @Bean public Filter characterEncodingFilter() { CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); characterEncodingFilter.setEncoding("UTF-8");原创 2021-07-25 14:48:00 · 213 阅读 · 0 评论