首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Spring的JNDI数据源连接池配备示例及Spring对JNDI实现分析

2012-07-02 
Spring的JNDI数据源连接池配置示例及Spring对JNDI实现分析?个人学习参考所用,勿喷!?在使用 Tomcat服务器 +

Spring的JNDI数据源连接池配置示例及Spring对JNDI实现分析

?

个人学习参考所用,勿喷!

?

在使用 Tomcat服务器 + SpringFramework 进行JavaEE项目的开发部署的时候可以在Tomcat的配置文件中进行JDBC数据源的配置,具体步骤如下(这里省略了工程的建立步骤):

?

1)?添加如下代码到tomcat的conf目录下的server.xml中:

?完成上述步骤数据源的连接池配置已经完成,但是为了提高项目的可移植性,最好将上述第二步的内容放入到工程的META-INF目录的context.xml中(这个文件需要自行建立):

?

2)在Spring的配置文件,如applicationContext.xml中配置配置如下内容:

?

3)建立数据库基础操作类 BaseDAOImpl

? ? 接口代码:

从JndiObjectFactoryBean的源码中也可以看到,JndiObjectFactoryBean的父类或所继承的接口都没有继承javax.sql.DataSource接口,所以一下的配置中:

?对org.springframework.jdbc.core.JdbcTemplate的dataSource属性的注入为何能够成功?

?

带着这样的疑问去iteye中提问,没有得到详细的解答,但是iteye的提示功能似乎很不错,在问题的下方给出了相关内容参考提示,进入到《从源代码解读spring之DataSource实现和FactoryBean模式》这个帖子中,看完以后大受启发。一下是从这篇帖子摘抄出来的内容:

?

?

再看源码后发现,JndiObjectFactoryBean实现了FactoryBean接口,下面是org.springframework.beans.factory.FactoryBean源代码里一段注释:?

?

?

对于JndiObjectFactoryBean对象,spring IOC容器启动时确实造了它的对象,只不过这时是工厂本身,spring会自动调用工厂里的afterPropertiesSet()方法去造真正需要的bean,然后调用getObject()和getObjectType()方法返回已造好的对象和类型,再将其准确的注入依赖它的其他bean里面。


?

好吧,也许上面org.springframework.beans.factory.FactoryBean的注释看起来像家长教育孩子该怎么怎么,那么Spring到底是怎么实现这种思想的呢?参考《Spring技术内幕》中2.5.3节对FactoryBean的实现的讲解,结合Spring的源码可以看到:

? ? ?常见的工厂Bean是怎样实现的,这些FactoryBean为应用生成需要的对象,这些对象往往是经过特殊处理的,比如像 ProxyFactoryBean 这样的特殊 Bean。FactoryBean 的生产特性是在getBean中起作用的,我们看到下面的调用:

Spring的JNDI数据源连接池配备示例及Spring对JNDI实现分析

再来看FactoryBean特性的实现:

?

type="javax.sql.DataSource"

这样一句。然后在去细看JndiObjectFactoryBean类中的afterPropertiesSet方法的具体代码所以一切都明了了。

?

综上所述,这里主要还是要对Spring的FactoryBean模式的理解最为重要。

?

热点排行