个人理解:
就像某些配置如果我们嵌入到代码中,每当配置需要改动的时候就不得不改动代码重新编译,
使用JNDI可以让我们使用外部配置的方式进行参数配置以实现其解耦。
下面这个例子就是使用数据库驱动是否使用JNDI的解耦。
直接使用JDBC或者通过JNDI引用数据源的编程代码量相差无几,但是现在的程序可以不用关心具体JDBC参数了。
在系统部署后,如果数据库的相关参数变更,只需要重新配置 mysql-ds.xml 修改其中的JDBC参数,只要保证数据源的名称不变,那么程序源代码就无需修改。
由此可见,JNDI避免了程序与数据库之间的紧耦合,使应用更加易于配置、易于部署。
部分有利于理解的说法:
配置JNDI的数据源,然后通过查找数据源获得连接对象
这个是面向横向服务编程的基础。一个应用是由一堆服务组装而成的,每个服务之间尽量少的耦合。这个和spring boot的这种微服架构的老爹。