BeanFactory与FactoryBean,相信很多刚翻看Spring源码的同学跟我一样很好奇这俩货怎么长得这么像,分别都是干啥用的.BeanFactory是Spring中Bean工厂的顶层接口,也是我们常说的SpringIOC容器,它定下了IOC容器的一些规范和常用方法并管理着Spring中所有的Bean,今天我们不讲它,我们看一下后面那个FactoryBean. 先说下FactoryBean和其作用再开始分析:首先它是一个Bean,但又不仅仅是一个Bean.它是一个能生产或修饰对象生成的…
Spring 中bean的作用.定义: 创建一个bean定义,其实质是用该bean定义对应的类来创建真正实例的"配方(recipe)".把bean定义看成一个配方很有意义,它与class很类似,只根据一张"处方"就可以创建多个实例. 你不仅可以控制注入到对象中的各种依赖和配置值,还可以控制该对象的作用域.这样你可以灵活选择所建对象的作用域,而不必在Java Class级定义作用域.     更多文章: 采用Spring管理Bean和依赖注入-http://www.b…
作者:DeppWang.原文地址 在造轮子:实现一个简易的 Spring IoC 容器一文中提到 Spring 在创建 Bean 实例和依赖注入时使用了反射,本文来具体分析一下 Spring 中的反射以及反射的原理. 一.Spring 中的反射 1.1.创建 Bean 实例时的反射 // 通过类加载器,根据 class 路径,得到其类对象 Class<?> clz = Thread.currentThread().getContextClassLoader().loadClass("…
转:http://blog.sina.com.cn/s/blog_7bbf356c01016wld.html 使用spring中的Log4jConfigListener有如如下好处:     1. 动态的改变记录级别和策略,不需要重启Web应用,如<Effective Enterprise Java>所说.     2. 把log文件定在 /WEB-INF/logs/ 而不需要写绝对路径.  因为 系统把web目录的路径压入一个叫webapp.root的系统变量.这样写log文件路径时不用写绝…
几年前记得整理过,@Transacitonal注解的方法被另外一个方法调用的时候,事务是不生效的. 如果大量代码已经这么写了,这个时候抽取出去不现实,怎么办呢? 答案就是在<aop:aspectj-autoproxy />中设置expose-proxy属性为true暴露代理.如下: <aop:aspectj-autoproxy expose-proxy=“true”> ,然后使用AopContext.currentProxy()获取当前代理,将this.b()改为((UserSer…
版本:spring-framework-4.1 一概述 BeanFactory 与 FactoryBean的区别, 两个名字很像,面试中也经常遇到,所以容易搞混,现从源码以及示例两方面来分析. 二.源码 2.1 BeanFactory BeanFactory定义了 IOC 容器的最基本形式,并提供了 IOC 容器应遵守的的最基本的接口,也就是 Spring IOC 所遵守的最底层和最基本的编程规范. BeanFactory仅是个接口,并不是IOC容器的具体实现,具体的实现有:如 DefaultL…
问: 原文链接 http://blog.csdn.net/cpp_lzth/article/details/6551703 看AOP的时候发现spring中有个org.springframework.transaction.interceptor.TransactionProxyFactoryBean.还有这里为什么要配置这个类呢??? 答: <!--设置数据源   --> <bean   id= "dataSource "   class= "org.sp…
ApplicationContextAware 通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicationContext方法. 我们在ApplicationContextAware的实现类中,就可以通过这个上下文环境对象得到Spring容器中的Bean. 看到—Aware就知道是干什么的了,就是属性注入的,但是这个ApplicationContextAware的不同地方在于,实现了这个接口的bean,当spring容器初始化…
spring的IOC容器负责bean的管理,当实例化一个bean是,spring保证该Bean所依赖的其他bean已经初始化.一般情况下,用<ref>元素建立对其他bean的依赖关系. 比如: <bean id="a" class="com.yanln.spring.bean.A"></bean> <bean id="b" class="com.yanln.spring.bean.B"…
我们经常会看到 如下代码 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(configPath.split("[,\\s]+")); context.start(); 其实该context.start()的作用就是初始话配置文件中的bean对象 //--------------------------------------------------------------------…