- 浏览: 256982 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
saishangxue123:
文章写的清楚、明了,一气呵成,支持
什么是反射、反射能干什么、如何使用反射? -
allen3010:
1,2,3,4,5这六个数字。。。。。
用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列
Spring 的微内核与FactoryBean扩展机制 DreamHead在《思考微内核》十分激赏 Spring的微内核与扩展机制: “Spring的微内核在哪里呢?便是DI容器。而通过FactoryBean,我们可以定制自己的组件组装过程,对一个普通的JavaBean做手脚,像Spring AOP中常用的ProxyFactoryBean做的那样。如此,我们就不必把所有功能都做到Spring的DI容器中去,而是以一个FactoryBean来对DI容器的功能进行扩展。除了Spring自身之外,现在已经有一些项目开始利用这个特性扩展Spring,比如,Acegi Security和Spring Modules。” 这确是框架容器界应该贯彻的范式,微内核提供最少的功能,而由扩展接口去增强框架的能力。下面看看Spring怎么设计,明白之后就可以开始为Spring捐献精力了:) 1、微内核的功能 1.1 DI(依赖注入)与Singleton管理 利用POJO setter的DI机制,估计每位同学随手都能写一个简单版本,不多说了。 Singleton管理说白了就是先到一个map中按id找找看有没有已存在的实例。 1.2 BeanName与BeanFactory注入 除了DI注入的属性,微内核还有什么能卖给POJO呢?就是Bean在xml 定义里的id和BeanFactory自己了。 卖的机制是让POJO 实现 BeanNameAware和BeanFactoryAware接口。BeanFactory用 if(pojo instance of BeanFactoryAware)判断到POJO需要注入BeanFactory,就调用setBeanFactory(this)将自己注入。 这种框架中基于接口的注入和调用机制在Java下挺标准的,Spring的功能多是基于这种模式提供。遗憾就是Java不支持多重继承,作为替代的接口里不能提供默认的实现,导致每一个Pojo都要很无聊的实现一遍setBeanFactory()。 1.3 DI后的初始化函数调用 比如属性A,B注入之后,需要同时根据A和B来对A,B进行加工或者装配一个内部属性C,这样就需要在所有属性注入后再跑一个init()函数。 Spring提供两种方式,一种是和上面的原理一样,实现InitializingBean接口的afterPropertiesSet()函数供Spring调用。 一种是在xml定义文件里面自行定义init函数名。 懒得每次在xml文件里定义的就采用第1种方式,不想与spring耦合的pojo就采用第2种方式。本来就是为了扩展Spring而存在的FactoryBean多采用第一种。 所谓微内核,就是仅提供以上三种功能的DI容器。 但作为轻量级容器,还需要以下两种方式,向容器内的POJO 附加各种服务。 2.FactoryBean扩展机制 Spring的AOP、ORM、事务管理、JMX、Quartz、Remoting、Freemarker、Velocity,都靠FacotryBean的扩展,FacotryBean几乎遍布地上: <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"/> <bean id="baseDAOService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"/> 只不过当年对这类factoryBean比较麻木不仁,不问原理的照搬照用了。 不过这原理说出来也好简单,所有FactoryBean 实现FactoryBean接口的getObject()函数。Spring容器getBean(id)时见到bean的定义是普通class时,就会构造该class的实例来获得bean,而如果发现是FacotryBean接口的实例时,就通过调用它的getObject()函数来获得bean,仅此而以.......可见,很重要的思想,可以用很简单的设计来实现。 考察一个典型的FactoryBean: 一般会有两个变量,三个接口: 一个setter函数注入需要改装的pojo,一个内部变量保持装配后的对象returnOjbect。 implements三个接口 :FactoryBean,InitializingBean和BeanFactoryAware 。 各接口的意义之前都讲过了。factoryBean会在afterPropertiesSet()里把pojo改装成returnObject,需要用到beanfactory进行天马行空的动作时就靠BeanFactoryAware注入。最后在getObject()里把returnObject返回。 Rod说:IoC principles, combined with the factory bean, afford a powerful means to abstract the act of obtaining or accessing services and resources
发表评论
-
java时间大小比较
2015-04-02 21:48 953摘自: http://blog.sina.com.cn/s/b ... -
StringBuffer的常用方法
2015-03-30 16:06 947摘自:http://blog.csdn.net/deaful/ ... -
什么是反射、反射能干什么、如何使用反射?
2013-08-16 00:03 4819//来源互联网 一、什 ... -
Class.forName···关于Class. 的应用介绍
2013-08-15 23:36 1142//摘自互联网 Class.forName(xxx.xx ... -
java泛型map的用法(转2)
2013-07-25 23:04 91721.声明一个map: Map map = ne ... -
java泛型map的用法(转)
2013-07-25 22:56 3102http://www.apkbus.com/blog-2079 ... -
关于日期 Date Calendar
2013-07-23 22:46 1119import java.security.Timestam ... -
正则表达式 例子
2013-07-22 23:00 815import java.util.regex.Matche ... -
Iterator的使用方法
2013-07-18 21:45 0import java.util.*; publ ... -
泛型的写法种种
2013-07-18 21:41 1011public class Generics<T> ... -
ArrayList ,LinkedList, TreeSet的使用方法
2013-07-18 21:35 2306import java.util.*; public ... -
Stack的使用方法
2013-07-18 21:26 1361import java.util.Stack; ... -
Hashtable的使用方法介绍
2013-07-18 21:24 22781**************************** ... -
老式枚举的使用方法
2013-07-18 21:23 933import java.util.Enumeration; ... -
java中Map的各种排序介绍
2013-07-14 13:24 1719//本篇来源于互联网 HashMap: 最常用的Ma ... -
java配置文件用法
2013-04-14 22:43 1298package cn.com.mfsoft.config; ... -
java利用反射得到实例
2013-04-10 22:44 1265对于面向接口编程的项目免不了要一反射相接触,动态得到实例: ... -
spring的beanFactory和factoryBean
2013-04-05 16:10 2115spring的beanFactory和factoryBe ... -
Spring配置文件总结
2013-04-05 16:05 876Spring配置文件总结(转) 2010-06-07 23: ... -
简单工程模式 工厂模式 抽象工厂模式
2013-04-05 14:50 1905http://www.cnblogs.com/poisso ...
相关推荐
主要介绍了简单了解Spring中BeanFactory与FactoryBean的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
spring源码解析之FactoryBean相关测试代码demo,文章中也有相关代码
主要给大家介绍了关于Spring中BeanFactory与FactoryBean接口的区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Spring具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
通过FactoryBean在获取目标类的时间我们将增强的代理类给返回,使得我们调用方法的时间使用的代理类来增强,如果需要继续使用未代理的对象,则直接@Autowired 注入使用.
Spring中的FactoryBean.rar
本篇文章主要介绍了Spring中的FactoryBean,如果一个bean的创建过程中涉及到很多其他的bean 和复杂的逻辑,用xml配置比较困难,这时可以考虑用FactoryBean
主要介绍了spring中的FactoryBean代码示例,涉及FactoryBean的实现等相关内容,具有一定参考价值,需要的朋友可以了解下。
这篇代码主要适用于我的博客,用来帮助理解Spring配置文件+FactoryBean的实例化过程。注意,这里是FactoryBean,而不是BeanFactory,下载资源要看清楚哈。
今天小编就为大家分享一篇关于spring中的BeanFactory与FactoryBean的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
68-BeanFactory与FactoryBean1
主要介绍了spring中FactoryBean中的getObject()方法实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
主要介绍了spring如何通过FactoryBean配置Bean,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了Spring BeanFactory和FactoryBean区别解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了深入了解Spring中的FactoryBean,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
spring 自定义 FactoryBean 样例工程,可以通过这个工程通过实现FactoryBean来扩展Spring容器
spring-1 演示了使用setter方式及构造器方式创建bean,util:list标签创建集合,p标签简化配置 和依赖注入, ...spring-4 演示了spring与JDBCTemplate配合使用 spring-5 演示了声明式事务及使用xml配置文件处理事务
Spring下描述依赖关系@Resource, @Autowired和@Inject的区别与联系 Spring中BeanFactory和ApplicationContext的区别 谈谈Spring IOC的理解,原理与实现? bean的生命周期,详细看上面 SpringBoot自动装配的过程的原理...
com-spring-ioc-demo:源码主要是学习Spring IOC的原理,以及对Bean的注册及控制,主要运用以下类对Spring进行扩展学习:BeanPostProcessor,BeanFactoryAware,BeanNameAware,ApplicationContextAware,FactoryBean,...
Spring介绍 1. Spring 2. 使用spring的主要目的 3. Spring的模块 Ejb容器(以前是) Ioc容器(现在的控制权) 控制反转Ioc(Invertion of control)依赖注入(Dependency Injection) ...13. 接口FactoryBean的使用
初探spring aop内部实现 、从源代码解读spring之DataSource实现和FactoryBean模式