一.BeanFactoryPostProcessor BeanFactory的后置处理器:在BeanFactory标准初始化之后调用,来定制和修改BeanFactory的内容:所有的bean定义已经保存加载到beanFactory,但是bean的实例还未创建. 1,使用 源码:MyBeanFactoryPostProcess @Component public class Demo01_MyBeanFactoryPostProcess implements BeanFactoryPostProc…
Java提供了Class类,可以通过编程方式获取类别的字段和方法,包括构造方法    获取Class类实例的方法:   类名.class   实例名.getClass()   Class.forName(className) public class RefTest { @Test public void testRef(){ //Class cls = RefTest.class; //Class.forName("com.jboa.service.RefTest"); //new…
从这个继承体系结构图来看,我们可以发现DefaultListableBeanFactory是第一个非抽象类,非接口类.实际IOC容器.所以这篇博客以DefaultListableBeanFactoryIOC容器为基准进行IOC原理解析. 一.两个重要接口 前面已经分析了BeanFactor,它的三个直接子类接口,接下来我们继续分析两个重要的接口,可以看到这两个接口也是集大成者. 首先是ConfigurableBeanFactor 1.ConfigurableBeanFactory 从名字可以看到…
前言 其实最近都在研究事务相关的内容,之所以写这么一篇文章是因为前面写了一篇关于循环依赖的文章: <面试必杀技,讲一讲Spring中的循环依赖> 然后,很多同学碰到了下面这个问题,添加了Spring提供的一个异步注解@Async循环依赖无法被解决了,下面是一些读者的留言跟群里同学碰到的问题: 本着讲一个知识点就要讲明白.讲透彻的原则,我决定单独写一篇这样的文章对@Async这个注解做一下详细的介绍,这个注解带来的问题远远不止循环依赖这么简单,如果对它不够熟悉的话建议慎用. 文章要点 @Asyn…
1.嵌入式Servlet容器自动配置原理 1.1 在spring-boot-autoconfigure-1.5.9.RELEASE.jar => springboot自动配置依赖 jar包下,EmbeddedServletContainerAutoConfiguration => 嵌入式servlet容器自动配置类 @AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE) @Configuration @ConditionalOnWebApplicatio…
目前这里能调用是因为,在service的实现类里面,new了一个dao的对象 正常情况下 这里不应该是new一个对象,应该等于null或为空 设置为空侯再运行就会报错 出错的原因是这里为null 需要讲完Bean的细节后.再来看上面的代码. 新建一个项目 配置打包方式 加入spring 的依赖 复制03里面的代码进来. 复制到04的里面 dao的包整个删除 service中不再调用dao类.都删除 复制bean.xml到新项目里 spring对bean的管理细节 第一种方式创建bean Serv…
Spring 提供了自动代理机制,可以让容器自动生成代理,从而把开发人员从繁琐的配置中解脱出来 . 具体是使用 BeanPostProcessor 来实现这项功能. 这三种自动代理创建器 为:BeanNameAutoProxyCreator     ,  DefaultAdvisorAutoProxyCreator  ,    AbstractAdvisorAutoProxyCreator. 1BeanPostProcessor BeanPostProcessor 代理创建器的实现类可以分为 3…
BeanFactory与FactoryBean,相信很多刚翻看Spring源码的同学跟我一样很好奇这俩货怎么长得这么像,分别都是干啥用的.BeanFactory是Spring中Bean工厂的顶层接口,也是我们常说的SpringIOC容器,它定下了IOC容器的一些规范和常用方法并管理着Spring中所有的Bean,今天我们不讲它,我们看一下后面那个FactoryBean. 先说下FactoryBean和其作用再开始分析:首先它是一个Bean,但又不仅仅是一个Bean.它是一个能生产或修饰对象生成的…
作者:DeppWang.原文地址 在造轮子:实现一个简易的 Spring IoC 容器一文中提到 Spring 在创建 Bean 实例和依赖注入时使用了反射,本文来具体分析一下 Spring 中的反射以及反射的原理. 一.Spring 中的反射 1.1.创建 Bean 实例时的反射 // 通过类加载器,根据 class 路径,得到其类对象 Class<?> clz = Thread.currentThread().getContextClassLoader().loadClass("…
通过BeanPostProcessor理解Spring中Bean的生命周期及AOP原理 Spring源码解析(十一)Spring扩展接口InstantiationAwareBeanPostProcessor解析 Spring bean的生命周期 Spring作为一个优秀的框架,拥有良好的可扩展性.Spring对对象的可扩展性主要就是依靠InstantiationAwareBeanPostProcessor和BeanPostProcessor来实现的. InstantiationAwareBean…