通过tomcat上下文文件和spring上下文声明数据源之间的区别
在通过tomcat上下文文件和spring上下文声明数据源之间的区别,spring,performance,tomcat7,Spring,Performance,Tomcat7,在META-IF/context.xml文件中声明DataSource并使用JNDI查找从Springbean获取它(方法1),或者直接通过spring声明DataSource(方法2)之间有什么区别吗 我认为第二种方法更好,因为它没有绑定到specefic服务器,这意味着如果我们使用第一种方法,并且有一天迁移到另一台服务器,我们必须在第二台服务器中调整上下文文件的策略(不是真的?) 感谢第一种方法的一些要点(容器中定义的数据源的JNDI查找): 可以在不接触实际应用程序的情况下进行配置 可以
META-IF/context.xml
文件中声明DataSource
并使用JNDI查找从Springbean获取它(方法1),或者直接通过spring声明DataSource
(方法2)之间有什么区别吗
我认为第二种方法更好,因为它没有绑定到specefic服务器,这意味着如果我们使用第一种方法,并且有一天迁移到另一台服务器,我们必须在第二台服务器中调整上下文文件的策略(不是真的?)
感谢第一种方法的一些要点(容器中定义的数据源的JNDI查找):
- 可以在不接触实际应用程序的情况下进行配置
- 可以更好地保护敏感信息(如密码)
- 数据源可以在同一服务器上的多个应用程序之间共享
如果我不需要上述任何方法,我将使用第二种方法(不太复杂,更易于部署)。第一种方法的一些要点(容器中定义的数据源的JNDI查找):
- 可以在不接触实际应用程序的情况下进行配置
- 可以更好地保护敏感信息(如密码)
- 数据源可以在同一服务器上的多个应用程序之间共享
如果我不需要上述任何一种方法,我将使用第二种方法(不太复杂,更易于部署)。如果有多个应用程序使用您的数据库。我们可以在容器内配置
数据源
,而不是让每个应用程序管理其数据库配置,我们将让应用程序指向该共享配置。这也将帮助您在所有应用程序之间共享数据库连接池
对不起,我刚刚在SO中找到了类似的答案(否则我不会发布这个答案)
当您必须在两个应用程序之间移动应用程序时,JNDI真的会大放异彩
环境:从开发到集成再到测试再到生产。如果你
将每个应用程序服务器配置为使用相同的JNDI名称,您可以
每个环境中都有不同的数据库,无需更改
代码。您只需拿起WAR文件并将其放入新的
环境
这里还有一些其他的假设,这些假设在判断时非常重要
这个答案是:
我无法访问部署代码的服务器
所有,除了对日志的只读访问。写作和写作的人
打包代码的人与配置和管理代码的人不同
服务器。一旦一个WAR文件开始了它的PROD之旅,它就不能被删除
没有回到开始就再次改变了。任何测试都有问题吗
如果WAR被更改,则必须在测试服务器上由QA完成。
也许你看不到这一好处,因为你是一个孤独的开发人员
在本地桌面上编写代码并部署到生产环境
来源:如果有多个应用程序使用您的数据库。我们可以在容器内配置
数据源
,而不是让每个应用程序管理其数据库配置,我们将让应用程序指向该共享配置。这也将帮助您在所有应用程序之间共享数据库连接池
对不起,我刚刚在SO中找到了类似的答案(否则我不会发布这个答案)
当您必须在两个应用程序之间移动应用程序时,JNDI真的会大放异彩
环境:从开发到集成再到测试再到生产。如果你
将每个应用程序服务器配置为使用相同的JNDI名称,您可以
每个环境中都有不同的数据库,无需更改
代码。您只需拿起WAR文件并将其放入新的
环境
这里还有一些其他的假设,这些假设在判断时非常重要
这个答案是:
我无法访问部署代码的服务器
所有,除了对日志的只读访问。写作和写作的人
打包代码的人与配置和管理代码的人不同
服务器。一旦一个WAR文件开始了它的PROD之旅,它就不能被删除
没有回到开始就再次改变了。任何测试都有问题吗
如果WAR被更改,则必须在测试服务器上由QA完成。
也许你看不到这一好处,因为你是一个孤独的开发人员
在本地桌面上编写代码并部署到生产环境
来源:这与标签“性能”有什么关系?Hello@JiriT
@Bean(destroyMethod = "close")
DataSource dataSource(Environment env) {
HikariConfig dataSourceConfig = new HikariConfig();
dataSourceConfig.setDriverClassName(env.getRequiredProperty(PROPERTY_NAME_DB_DRIVER_CLASS));
dataSourceConfig.setJdbcUrl(env.getRequiredProperty(PROPERTY_NAME_DB_URL));
dataSourceConfig.setUsername(env.getRequiredProperty(PROPERTY_NAME_DB_USER));
dataSourceConfig.setPassword(env.getRequiredProperty(PROPERTY_NAME_DB_PASSWORD));
return new HikariDataSource(dataSourceConfig);
}