gpt4 book ai didi

spring - Datasource 应该由 Spring 还是 web-container 管理?

转载 作者:行者123 更新时间:2023-12-05 02:20:37 28 4
gpt4 key购买 nike

我试图了解现实生活中的企业应用程序(例如 Web 应用程序,使用 Spring 框架)谁应该管理数据源?我可以想到两种方法:

(i) 在 Spring 配置中定义的数据源,应用程序可以根据需要从 Spring 容器中获取数据源。

(ii) 在 web-container 中定义数据源(例如),然后应用程序可以从容器中获取数据源。

现在,我有以下问题:

Q1) 在场景(i) 中,我相信我们可以使用 Spring 的 DI 来注入(inject)由 Spring 管理的数据源。是否正确?

Q2) 在场景 (ii) 中,获取数据源的唯一方法是使用 JNDI 查找,因为数据源是在容器中配置的,因此 Spring 将无法进行 DI。正确吗?

Q3) 当数据源由Spring容器管理时,它是否能够处理连接池全局事务等? ,如果是这样,如何?它是否在内部使用一些第三方库来实现这一切?

非常感谢有关此的任何详细信息。

最佳答案

基本上:

  • Spring定义的数据源让你独立于容器,更容易部署你的应用
  • 容器定义的数据源将数据源配置的权力和责任交给了服务器管理员而不是程序员
    • 这可以说是更好的责任/角色分离
    • 它允许服务器管理员在不知道您的应用程序细节的情况下维护和更新数据源
    • 它解决了一个常见的“没有明文形式的数据库密码”的要求,让容器代替您负责保护密码

It is possible to refer to a JNDI resource in Spring configuration ,因此 Spring 将为您进行查找,并且它可用于 DI。

您可以使用第三方库(例如 Apache commons-dbcp )为 Spring 管理的数据源做连接池(我在企业项目上这样做过)。

Spring 使用内置的 TransactionManager 支持 DB 事务管理。根据documentation ,似乎只有在容器中定义数据源时 JPA 才可用。

关于spring - Datasource 应该由 Spring 还是 web-container 管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38345495/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com