`

SPI入门级Demo(五:服务消费者)

    博客分类:
  • SPI
阅读更多

前面已经定义好了服务的契约接口以及服务的实现者(加法服务、乘法服务),

本文将开发一个服务消费者,所谓的消费者即消费服务,通过引入相应服务的jar包来自动消费相应的服务。

 

首先同样新建一个Java工程spi-consumer,

新建服务消费类com.fanyc.test.spi.consumer.Consumer,并添加可执行的main方法。

由于是服务消费者,必须要知道要消费的服务契约即接口定义,所以必须要引入服务契约的定义jar包spi-intface.jar。

 

消费服务代码如下:

 

package com.fanyc.test.spi.consumer;

import java.util.ServiceLoader;

import com.fanyc.test.spi.intface.Computer;

/**
 * 服务消费者
 * @author Fanyc
 *
 */
public class Consumer {
	
	public static void main(String[] args) {
		ServiceLoader<Computer> sl = ServiceLoader.load(Computer.class);
		if(sl == null || sl.iterator().hasNext() == false){
			System.err.println("未发现服务提供商!");
			return;
		}
		int a = 20;
		int b = 5;
		for(Computer cp : sl){
			System.err.println(String.format("服务提供商【%s】执行结果:%s",cp.getClass().getName(),cp.compute(a,b)));
		}
	}
}

利用ServiceLoader.load方法来加载当前classpath中所有服务实现者。

如果没有服务实现者则返回结果为空,否则返回结果为实现了Iterable接口的列表,

可以通过for循环来遍历所有服务实现者。

 

在没有引入服务实现者jar包时,运行结果为:

引入spi-provider-add.jar包后,运行结果为:

服务提供商【com.fanyc.test.spi.provider.Add】执行结果:25

再引入spi-provider-multi.jar包后,运行结果为:

服务提供商【com.fanyc.test.spi.provider.Add】执行结果:25
服务提供商【com.fanyc.test.spi.provider.Multi】执行结果:100

 

由此可以看出SPI可以自动发现并调用服务实现者,而对于服务消费者无需知道到底有几个服务实现者甚至是没有服务实现者,只要在classpath中引用了服务实现者的jar包即可自动调用。

 

更多服务实现者如减法和除法可自行实现。

 

至此整个关于《SPI的入门级Demo》系列已经完成。

分享到:
评论

相关推荐

    SPI入门级Demo(三:服务实现者-加法服务)

    在本示例中,我们将探讨如何创建一个简单的SPI入门级Demo,具体是关于实现一个加法服务。 首先,理解SPI的基本流程: 1. **定义接口**:服务接口是所有实现者必须遵循的规范。在这个例子中,我们可以定义一个名为`...

    SPI入门级Demo(四:服务实现者-乘法服务)

    这个"SPI入门级Demo(四:服务实现者-乘法服务)"就是一个简单的SPI应用实例,通过这个例子,我们可以了解到SPI的基本操作,包括定义接口、实现接口、配置服务实现和加载服务。对于开发者来说,理解并掌握SPI机制有...

    SPI入门级Demo(二:契约即接口定义)

    - SPI降低了组件之间的耦合度,使得服务提供者和服务消费者可以独立开发和更新。 - 它提供了一种标准的方式来扩展应用程序,使得第三方开发者可以轻松地添加新的功能模块。 - 动态加载服务使得系统更具有可扩展性...

    Dubbo官网入门Demo.zip

    - **服务消费者(Consumer)**:调用远程服务的服务方。 - **注册中心(Registry)**:服务注册与发现的中间件,服务提供者向注册中心注册自己的服务,服务消费者通过注册中心获取服务提供者的信息。 - **协议...

    dubbo_demo.zip

    2. **服务消费者(Consumer)**:服务消费者在需要调用服务时,从注册中心获取服务提供者的地址,然后发起远程调用。 3. **注册中心(Registry)**:注册中心负责服务的注册与发现,是服务提供者和服务消费者之间的...

    dubbo入门案例与资料-java

    2. **服务消费者(Consumer)**:调用远程服务的角色,通过服务中心获取服务提供者的信息进行远程调用。 3. **注册中心(Registry)**:用于存储服务提供者和消费者的信息,提供服务发现功能。 4. **协议(Protocol...

    stm32入门&示例demo.pdf

    ### STM32 入门与示例 DEMO #### 一、STM32 简介 STM32 是由 STMicroelectronics 生产的一系列基于 ARM Cortex-M 内核的 32 位微控制器。它以其高性能、低功耗和广泛的外设支持而闻名,适用于多种嵌入式应用场合,...

    入门级ARM9开发板原理图.rar

    本文将深入解析入门级ARM9开发板的原理图,帮助初学者理解其设计思路与工作原理。 1. **ARM9内核** ARM9系列是基于RISC(精简指令集计算机)架构的32位处理器,具备多种工作模式,如用户模式、系统模式、中断模式...

    stm32入门&示例demo.zip

    本资源“stm32入门&示例demo.zip”显然是一份针对初学者的STM32教程,包含了入门知识讲解和实践示例,以帮助用户快速上手STM32的开发工作。 STM32系列的特点包括低功耗、高性能、丰富的外设接口以及广泛的封装选择...

    gd32f1xx系列demo例程

    《GD32F1xx系列Demo例程详解》 ...总之,GD32F1xx系列Demo例程是开发者入门和进阶的宝贵资源,通过深入研究和实践,开发者能够充分利用GD32F1xx的强大功能,开发出满足各种需求的嵌入式系统应用。

    电子-AVRPQ1ADEMO.rar

    STM32-F0系列是STM32家族的基础入门级产品,采用Cortex-M0内核,适合对成本敏感但又需要高性能处理的应用。它提供了丰富的外设接口,如GPIO、定时器、串口等,同时在内存和计算能力上满足了基本需求。 STM32-F1系列...

    Xilinx 公司BASYs开发板自带的Demo程序.7z

    BASys系列开发板是Xilinx针对教育和入门级设计者推出的,它们通常包括了FPGA核心、各种接口(如GPIO、SPI、I2C、USB等)、存储器(如SRAM或Flash)以及其他外围设备,为开发者提供了一个全面的硬件平台。 Demo程序...

    vivado入门与提高第2讲DEMO(含源文件)

    2. **IP Integrator**:Vivado的集成IP工具使得设计者可以方便地构建复杂的系统级设计。在DEMO中,你可能会接触到IP Packager,它是创建自定义IP核的关键。IP Packager允许你封装硬件模块,使其成为可重用的IP资源,...

    103c8t6_demo_stm32_DEMO_源码

    STM32F103C8T6通常被称为“蓝桥”,因其蓝色的封装和丰富的GPIO引脚而广受欢迎,常用于入门级的电子项目。 这个DEMO可能包括了以下常见功能的实现: 1. **初始化**:包括系统时钟配置、GPIO口配置、中断设置等。...

    电子-STM32F030DEMO.zip

    - **文档**:用户手册、快速入门指南、硬件设计资料等,帮助用户理解Demo的运作原理和移植方法。 通过这个Demo,学习者可以了解到STM32F030的开发流程,包括代码编写、编译、烧录和调试。同时,还可以了解如何利用...

    STM32F103ZET6标准库工程Demo

    "STM32F103ZET6标准库工程Demo"指的是使用STM32官方提供的标准库(STM32CubeMX或HAL库)编写的演示程序,旨在帮助开发者理解和快速入门STM32F103ZET6的开发工作。 在STM32的标准库工程中,主要包含以下几个方面的...

    STM32F103 IC card demo_stm32_iccard_

    STM32F103是意法半导体(STMicroelectronics)公司生产的基于ARM Cortex-M3内核的微控制器,属于STM32系列的入门级产品。这个IC卡检测的demo是为了帮助开发者理解如何在STM32F103上实现对IC卡(智能卡)的读写操作,...

    GD32E230C8T6_Demo

    这个工程模板为开发者提供了快速入门和应用开发的基础,帮助他们熟悉GD32E230的特性并进行实际的编程实践。 GD32E230系列是通用微控制器(MCU)的一种,由Gigadevice(兆易创新)公司生产。该系列芯片采用ARM ...

    Nexys3开发板Verilog Demo

    1. **Nexys3开发板**:Nexys3是Xilinx公司的一款基于 Spartan-6 FPGA 的教育和入门级开发板。它提供了丰富的外围接口,如LED、按键、七段数码管、SPI、I2C、UART等,为学习和实验提供了便利条件。 2. **Verilog基础...

Global site tag (gtag.js) - Google Analytics