将JdbcTemplate与“非Spring-Bean”JNDI数据源一起使用

时间:2011-09-21 20:07:08

标签: spring jdbc datasource jndi

spring-framework-reference.pdf(与spring-framework-3.1.0.M2捆绑在一起)的第342页指出,“通过使用DataSource引用直接实例化,可以在DAO实现中使用JdbcTemplate。”但是,它继续说,“DataSource应始终配置为Spring IoC容器中的bean。”

有谁知道为什么不应该从Spring容器外部的普通JNDI查找向JdbcTemplate提供DataSource,例如: How to programatically use Spring's JdbcTemplate?

1 个答案:

答案 0 :(得分:1)

  

“应始终将DataSource配置为Spring IoC容器中的bean。”

本说明似乎是为了澄清前面的陈述:

“JdbcTemplate可以通过使用DataSource引用直接实例化在DAO实现中使用,也可以在Spring IoC容器中配置,并作为bean引用提供给DAO。”

我相信这些陈述试图传达的信息是,当您在Spring中配置DAO时,您可以:

  1. 将DataSource直接注入DAO并自行创建代码中的JdbcTemplate,或者
  2. 您也可以将JdbcTemplate作为Spring bean,将DataSource注入JdbcTemplate,并将JdbcTemplate注入DAO。
  3. 然后,注意意味着如果Spring管理DAO及其依赖项,则DataSource在任何一种情况下都必须是Spring bean,因为它需要注入DataSource以用于构造JdbcTemplate(案例1)或者进入JdbcTemplate本身(案例2)。

    我不认为JdbcTemplate中使用的DataSource必须始终由Spring和Spring管理。这张纸条确实给人留下了深刻它可能值得提交一个错误。