关于依赖注入

概述依赖注入对于经常使用Spring我们在熟悉不过了,可以我们有没有想过它到底做了什么,以及为什么要这样做?所以今天我想写一篇关于依赖注入的文章,把依赖注入的细节讲清楚。依赖注入的细节首先依赖注入就是我们理解的字面意思,将一个对象的依赖进行注入。这里我举一个我们平时开发的例子来看看依赖注入是怎样的?

代理框架的一些思考

概述本文想要说明的是代理框架的如何实现,主要是基于Spring的AOP源码。Spring AOP的实现原理代理模式的一种应用就是持有目标对象的引用,并管理生命周期,并在此之上可以增加增强内容。注意,这里说的代理模式和装饰模式有本质上的区别,这种区别体现在应用上,两者相似度很高需要区分开。好了,这里重

Spring事务执行基本原理

一个Bean在执行Bean的创建生命周期时,会经过InfrastructureAdvisorAutoProxyCreator的初始化后的方法,会判断当前Bean对象是否和BeanFactoryTransactionAttributeSourceAdvisor匹配,匹配逻辑为判断该Bean的类上是否存

Spring AOP概念

概念首先需要明确几个AOP的核心的概念。这几个概念构成了AOP的基本组件。连接点(Joinpoint)程序执行的某个特定位置(如:某个方法调用前、调用后,方法抛出异常后)。一个类或一段程序代码拥有一些具有边界性质的特定点,这些代码中的特定点就是连接点。Spring仅支持方法的连接点。切点(Point

Spring源码解析-bean的加载

容器每个类的作用AliasRegistry:定义对alias的简单增删改等操作SimpleAliasRegistry:主要使用map作为alias的缓存,并对接口AliasRegistry进行实现SingletonBeanRegistry:定义对单例的注册及获取BeanFactory:定义获取bea

动态代理模式技术最佳实践探讨

1 概述动态代理技术大家都很熟悉,我们日常使用的应用框架大部分都将动态代理技术作为核心技术实现,Proxy模式是一种能够有效的降低框架的侵入性的手段。参考大部分框架主要的实现手段一般是由系统使用方定义使用接口,然后框架通过动态代理技术对接口进行实现。在此基础上可以在被代理实现类的核心处理方法中定义。

事务不生效问题分析

问题现象:Manager层标记事务注解,事务不生效,抛出异常后,持久化数据无法回滚。问题原因:是因为事务管理器和mybatis配置的数据源不一致,导致声明式事务管理的连接,与真正执行SQL的连接不一致,进而导致事务不生效。1、开始事务的时候数据库连接池及获取到的连接如下:(1)连接池(2)连接2、S

AbstractAdvisingBeanPostProcessor 和 APC 的异同

共同点都是BeanPostProcessor都有可能将某个bean包装成一个代理对象,增加一些拦截器功能不同点APC (AutoProxyCreator)在整个容器的范围查找所有的匹配当前bean的拦截器,包装成Spring Advisors为当前bean创建代理对象AbstractAdvising