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?
答案 0 :(得分:1)
“应始终将DataSource配置为Spring IoC容器中的bean。”
本说明似乎是为了澄清前面的陈述:
“JdbcTemplate可以通过使用DataSource引用直接实例化在DAO实现中使用,也可以在Spring IoC容器中配置,并作为bean引用提供给DAO。”
我相信这些陈述试图传达的信息是,当您在Spring中配置DAO时,您可以:
然后,注意意味着如果Spring管理DAO及其依赖项,则DataSource在任何一种情况下都必须是Spring bean,因为它需要注入DataSource以用于构造JdbcTemplate(案例1)或者进入JdbcTemplate本身(案例2)。
我不认为JdbcTemplate中使用的DataSource必须始终由Spring和Spring管理。这张纸条确实给人留下了深刻它可能值得提交一个错误。