Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring Boot应用程序中使用JNDI有什么原因吗? 背景_Java_Spring_Jakarta Ee_Spring Boot_Jndi - Fatal编程技术网

Java 在Spring Boot应用程序中使用JNDI有什么原因吗? 背景

Java 在Spring Boot应用程序中使用JNDI有什么原因吗? 背景,java,spring,jakarta-ee,spring-boot,jndi,Java,Spring,Jakarta Ee,Spring Boot,Jndi,我们正在将传统java应用程序从部署到tomcat容器的war转换为运行在嵌入式tomcat服务器中的Spring引导应用程序。我们目前正在为数据库连接使用JNDI,这些连接在tomcat实例的conf/文件夹中的context.xml中定义 问题 在Spring引导应用程序中没有实现这一点的方法,事实并非如此。我已经找到了在Spring引导应用程序中使用JNDI定义数据源的解决方案,但它需要代码中的所有连接信息。这让我想到,如果连接信息在代码中,那么使用JNDI还有什么意义吗?我认为JNDI的

我们正在将传统java应用程序从部署到tomcat容器的war转换为运行在嵌入式tomcat服务器中的Spring引导应用程序。我们目前正在为数据库连接使用JNDI,这些连接在tomcat实例的
conf/
文件夹中的
context.xml
中定义

问题 在Spring引导应用程序中没有实现这一点的方法,事实并非如此。我已经找到了在Spring引导应用程序中使用JNDI定义数据源的解决方案,但它需要代码中的所有连接信息。这让我想到,如果连接信息在代码中,那么使用JNDI还有什么意义吗?我认为JNDI的意义在于将如何连接的细节分开,以便可以根据环境定义

可供替代的
在没有JNDI的情况下定义一个数据源,并在外部定义连接细节(例如,命令行参数、Spring Cloud Config Server或其他内容)。

请记住,JNDI最初被认为是一种提取数据源的特定连接细节的方法(当然,不仅仅是数据源,你也可以得到要点)。这个抽象在总体上是有意义的,因此JNDI是一个官方认可的标准,必须在所有想要与JEE(J2EE?不记得)兼容的东西中实现


您仍然需要一个配置抽象,因为您不想在代码中硬编码所有不同环境的所有值,但是Spring已经为这一点提供了现成的解决方案。就我个人而言,我不会在任何JEE服务器中使用JNDI。

没错,我不是说连接细节不应该抽象,就在我第一次意识到在Spring Boot中使用JNDI的建议是将它们编码进来的时候,这让我想知道为什么我们应该使用JNDI。谢谢Spring Boot支持非jndi数据源,只需将一些属性添加到
应用程序中。属性
就可以了。当使用嵌入式容器时,JNDI(IMHO)实际上没有任何用处。仅当您部署到容器时,重用现有数据源(例如)才有意义。