首页 >> 大全

JDK 自带的服务发现框架 ServiceLoader 好用吗?

2024-01-08 大全 42 作者:考证青年

前言

过去两年,我们在掘金平台上发布过一些文章,小彭也受到了大家的意见和鼓励。最近,小彭会陆续搬运到公众号上。

学习路线图:

1. 认识服务发现? 1.1 什么是服务发现

服务发现( ,SPI)是一个服务的注册与发现机制,通过解耦服务提供者与服务使用者,实现了服务创建 & 服务使用的关注点分离。服务提供模式可以为我们带来以下好处:

服务发现示意图

1.2 服务发现和依赖注入的区别

服务发现和依赖注入都是控制反转 Ioc 的实现形式之一。IoC 可以认为是一种设计模式,但是由于理论成熟的时间相对较晚,所以没有包含在《设计模式 · GoF》之中,即:当依赖方需要使用依赖项时,不再直接构造对象,而是由外部 IoC 容器来创建并提供依赖。

2. JDK 的使用步骤

在分析 的使用原理之前,我们先来介绍下 的使用步骤。

我们直接以 JDBC 作为例子,其中「2、连接数据库」内部就是用了 。为什么连接数据库需要使用 SPI 设计思想呢?因为操作数据库需要使用厂商提供的数据库驱动程序,如果直接使用厂商的驱动耦合太强了,而使用 SPI 设计就能够实现服务提供者与服务使用者解耦。

以下为使用步骤,具体分为 5 个步骤:

Class.forName("com.mysql.jdbc.driver")

DriverManager.getConnection(url, user, password)

Connection#.creatstatement();

_服务框架安装_安装服务框架还是打不开

Statement#executeQuery()

ResultSet#close()
Statement#close()
Connection#close()

下面,我们一步步手写 JDBC 中关于 的相关源码:

步骤 1:定义服务接口

定义一个驱动接口,这个接口将由数据库驱动实现类实现。在服务发现框架中,这个接口就是服务接口。

public interface Driver {// 创建数据库连接Connection connect(String url, java.util.Properties info);...
}

步骤 2:实现服务接口

数据库厂商提供一个或多个实现 接口的驱动实现类,以 mysql 和 为例:

// 已简化
public class Driver extends NonRegisteringDriver implements java.sql.Driver {static {// 注册驱动java.sql.DriverManager.registe

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了