一,什么是JNDI数据源?
我们看下百度百科的描述
JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。
看完了之后,是不是感觉很抽象?这里我们需要理解这么几点
(1)JNDI是J2EE的规范之一。
(2)JNDI主要有两部分组成:应用程序编程接口和服务供应商接口。应用程序编程接口提供了Java应用程序访问各种命名和目录服务的功能,服务供应商接口提供了任意一种服务的供应商使用的功能。
(3)J2EE 规范要求全部 J2EE 容器都要提供 JNDI 规范的实现。
(4)JNDI 提出的目的是为了解藕,避免了程序与数据库之间的紧耦合,使应用更加易于配置、易于部署。
以上概念内容摘抄自大佬博客,以下内容皆为笔者亲历亲为所得所感悟!
JNDI的出现,让数据库连接代码交给容器管理,比如Tomcat、JBOSS等容器,这样对于开发者就不用关心数据库配置是什么,使用的什么数据库驱动连接数据库等
传统的JNDI是依赖web容器的,例如spring框架,在容器中配置好数据源(或者多数据源)配置,然后在spring项目的配置文件中指定数据源名称,然后把spring项目打成war包部署到容器中运行,就可以使用JNDI数据源了!
spring项目外置tomcat集成jndi数据源请参考