我试图在现实生活中理解应该管理数据源的企业应用程序(例如使用Spring Framework的Web应用程序)?我可以想到两种方式:
(i)在Spring配置中定义的数据源,根据需要,应用程序可以从Spring容器中获取数据源。
(ii)在web容器中定义的数据源(例如),然后应用程序可以从容器中获取数据源。
Q1)在方案中(i)我相信我们可以使用Spring的DI来注入数据源,因为它是由Spring管理的。这是对的吗?
Q2)在方案(ii)中,获取数据源的唯一方法是使用JNDI查找,因为数据源是在容器中配置的,因此Spring无法做DI。是对的吗?
Q3)当数据源由Spring容器管理时,是否能够处理connection pooling
,global transaction
等,如果是,如何处理?它是否在内部使用某些第三方库来实现这一切?
关于此的任何详细信息都非常感谢。
答案 0 :(得分:3)
基本上:
It is possible to refer to a JNDI resource in Spring configuration,所以Spring将为您执行查找,它将可用于DI。
您可以使用第三方库(例如Apache commons-dbcp)为Spring管理的数据源建立连接池(我已经在企业项目中这样做了)。
Spring使用内置的TransactionManager支持数据库事务管理。根据{{3}},似乎JPA仅在数据源在容器中定义时才可用。