读书人

从源代码解读spring之DataSource兑现和

发布时间: 2012-11-21 08:23:25 作者: rapoo

从源代码解读spring之DataSource实现和FactoryBean模式
大家平日使用spring + hibernate做项目的时候大概都接触过下面的spring配置代码:

下面是使用普通的jdbc驱动获得DataSource的配置



下面是通过JNDI获得的DataSource的配置,只要将上面的id为"dataSource"的bean换成下面的配置就行了



配置很简单,使用也非常方便,spring毫不挑食,不管是jdbc版的DataSource也好,是JNDI版的也好,它都能接受,那这个兼容性是怎么做到的呢??现在从源代码入手来一探究竟:

1. 先看看jdbc版的DataSource - org.springframework.jdbc.datasource.DriverManagerDataSource



现在揭晓谜底:很简单,对于JndiObjectFactoryBean对象,spring IOC容器启动时确实造了它的对象,只不过这时是工厂本身,spring会自动调用工厂里的afterPropertiesSet()方法去造真正需要的bean,然后调用getObject()和getObjectType()方法返回已造好的对象和类型,再将其准确的注入依赖它的其他bean里面,所以并没有违背java的精神!

有兴趣也可以看看org.springframework.orm.hibernate3.LocalSessionFactoryBean,它也实现了FactoryBean接口,内部实现如出一辙,只不过它担负的重任不是造JNDI object,而是要造SessionFactory对象
1 楼 xiaogu2008 2009-10-09 分析的相当精彩。
2 楼 xiaogu2008 2009-10-09 看了我不困 3 楼 shanfeng1 2009-11-11 看来咱层次还没上来 4 楼 haokong 2010-01-16 有点意思,学习了,lz再接再厉啊。
看来什么都要追根问底啊。 5 楼 firefly1314 2010-01-16 提出问题->分析问题->解决问题
lz步步深入,分析的很透彻。向lz学习,不浮于问题表面。

最近对spring的注入一头雾水,还需深入,继续学习ing~~~~

读书人网 >软件架构设计

热点推荐