采用JDBC解释java SPI机制和线程上下文类加载器——————开开开山怪
采用JDBC解释JAVA SPI机制和线程上下文类加载器 SPI(Service Provider Interface)网上有关于SPI的解释,在这里我简单总结一下。 SPI机制可以做到将服务接口和真正的服务接口的实现类分开,可以增加程序的可扩展性,通过扫描规定的路径来进行实现类的获取,可以说是一种服务发现机制。 优点 : 在面向对象的设计中,我们一般建议基于接口的编程,如果代码中涉及到具体的实现类,如果我们想要换一种实现方案就不得不更改代码,但是采用接口的方式,只要我们采用一种机制,可以使得我们能够获取接口的不同的实现类,那么我们的代码的灵活性就比较的高,这种机制就是SPI。 SPI机制的工作过程 当服务提供者提供了服务接口的实现类,当实现类打成jar包之后,在jar包的META-INF/services/ 建立一个以服务接口名称为文件名称的文件,并且文件的内容为该服务接口的实现类的名称,那么当应用程序需要这部分功能模块的时候,就能通过META-INF/services/下的这个配置文件找到对应的实现类的名称,可以进行加载并且实例化。这也是同时也是服务提供者需要遵守的规则。 下面我们举例子所说的服务提供者就是mysql-connector-java-5.1.46-bin.jar 服务接口就是java.sql.Driver. 栗子: 在我们程序中,需要链接数据库的时候