快速入门

本文档将演示了如何在 SOFABoot 环境下应用 SOFARPC 进行服务的发布和引用。

您可以直接在工程下找到本文档的示例代码。注意,示例代码中需要本地安装 zookeeper 环境,如果没有安装.需要将application.properties中的com.alipay.sofa.rpc.registry.address 配置注释掉.走本地文件注册中心的方式

创建工程

  1. 环境准备。SOFABoot 需要 JDK7 或者 JDK8 ,需要采用 Apache Maven 2.2.5 或者以上的版本来编译。
  2. 工程构建。SOFABoot 构建在 Spring Boot 之上。因此可以使用 Spring Boot 的工程生成工具 来生成一个标准的Spring Boot 工程。
  3. 引入 SOFABoot 环境。生成的 Spring Boot 标准工程直接使用的 Spring Boot 的 parent 依赖,改为 SOFABoot 提供的 parent 依赖,该parent 提供并管控了多种 SOFABoot 提供的 starter。
    1. <parent>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-starter-parent</artifactId>
    4. <version>${spring.boot.version}</version>
    5. <relativePath/>
    6. </parent>
    替换为:
    1. <parent>
    2. <groupId>com.alipay.sofa</groupId>
    3. <artifactId>sofaboot-dependencies</artifactId>
    4. <version>2.3.2</version>
    5. </parent>
  4. 配置 application.properties 。
    application.properties 是 SOFABoot 工程中的配置文件。这里需要配置一个必不可少的配置项,即应用名。
    1. spring.application.name=AppName
  5. 引入 RPC Starter。
    1. <dependency>
    2. <groupId>com.alipay.sofa</groupId>
    3. <artifactId>rpc-sofa-boot-starter</artifactId>
    4. </dependency>
  6. 声明 SOFABoot 的 xsd 文件
    在要使用的 XML 配置文件中将头部 xsd 文件的声明设置为如下。这样就能够使用 SOFABoot 定义的 XML 元素进行开发。
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xmlns:sofa="http://sofastack.io/schema/sofaboot"
    5. xmlns:context="http://www.springframework.org/schema/context"
    6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    7. http://sofastack.io/schema/sofaboot http://sofastack.io/schema/sofaboot.xsd"
    8. default-autowire="byName">

定义服务接口与实现

  1. public interface HelloSyncService {
  2. String saySync(String string);
  3. }
  1. public class HelloSyncServiceImpl implements HelloSyncService {
  2. @Override
  3. public String saySync(String string) {
  4. return string;
  5. }
  6. }

服务端发布服务

在 xml 文件中编写如下配置。Spring 上下文在刷新时,SOFABoot 就将该服务实现注册到了服务器上,以 bolt 协议与客户端进行通信地址,并将地址等元数据发布到了注册中心(这里默认使用的本地文件作为注册中心)。

  1. <bean id="helloSyncServiceImpl" class="com.alipay.sofa.rpc.samples.invoke.HelloSyncServiceImpl"/>
  2. <sofa:service ref="helloSyncServiceImpl" interface="com.alipay.sofa.rpc.samples.invoke.HelloSyncService">
  3. <sofa:binding.bolt/>
  4. </sofa:service>

客户端引用服务

在 xml 文件中编写如下配置。Spring 上下文刷新时,SOFABoot 会生成一个RPC的代理 bean,即 personReferenceBolt 。这样就可以直接在代码中使用该 bean 进行远程调用了。

  1. <sofa:reference id="helloSyncServiceReference" interface="com.alipay.sofa.rpc.samples.invoke.HelloSyncService">
  2. <sofa:binding.bolt/>
  3. </sofa:reference>

运行

在 SpringBoot 的启动类中编码如下。其中利用 ImportResource 将上述的xml文件加载。

  1. @ImportResource({ "classpath*:rpc-sofa-boot-starter-samples.xml" })
  2. @org.springframework.boot.autoconfigure.SpringBootApplication
  3. public class SofaBootRpcSamplesApplication {
  4. public static void main(String[] args) {
  5. SpringApplication springApplication = new SpringApplication(SofaBootRpcSamplesApplication.class);
  6. ApplicationContext applicationContext = springApplication.run(args);
  7. HelloSyncService helloSyncServiceReference = (HelloSyncService) applicationContext
  8. .getBean("helloSyncServiceReference");
  9. System.out.println(helloSyncServiceReference.saySync("sync"));
  10. }
  11. }

打印结果如下:

  1. sync

以上就完成了一次服务发布和服务引用。