【dubbo系列】 02-基于spring加载dubbo配置

前言

本文主要dubbo和spring的结合使用,在spring配置文件中配置dubbo的相关信息。

同时,本文代码基于01 dubbo系列 | dubbo快速入门

环境

需要引入spring相关的依赖。

第一步:dubbo-demo-provider模块配置用spring暴露服务。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <!--实现的服务-->
    <bean id="demoServiceImpl" class="com.joyxj.dubbo.demo.provider.DemoServiceImpl" />
    <bean id="userServiceImpl" class="com.joyxj.dubbo.demo.provider.UserServiceImpl" />

    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="dubbo-demo-provider">
        <!--在线运维命令配置-->
        <dubbo:parameter key="qos.enable" value="true"/>
        <dubbo:parameter key="qos.accept.foreign.ip" value="false"/>
        <dubbo:parameter key="qos.port" value="22222"/>
    </dubbo:application>
    <!--dubbo 注册中心-->
    <dubbo:registry address="zookeeper://localhost:2181" />
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880"/>
    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.joyxj.dubbo.demo.api.DemoService" ref="demoServiceImpl" />
    <dubbo:service interface="com.joyxj.dubbo.demo.api.UserService" ref="userServiceImpl"/>
</beans>

第二步:dubbo-demo-provider模块启动类。

package com.joyxj.dubbo.demo.provider;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

/**
 * 基于spring的提供方启动类
 *
 * @author xiaoj
 * @version 1.0
 * @date 2019-04-18
 */
public class SpringProviderApplication {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("application-provider.xml");
        context.start();
        try {
            System.in.read();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

第三步:dubbo-demo-consumer模块配置用spring调用远程服务。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="dubbo-demo-cosumer" >
        <dubbo:parameter key="qos.enable" value="true"/>
        <dubbo:parameter key="qos.accept.foreign.ip" value="false"/>
        <dubbo:parameter key="qos.port" value="33333"/>
    </dubbo:application>
    <!--dubbo 注册中心-->
    <dubbo:registry address="zookeeper://localhost:2181" />

    <dubbo:reference interface="com.joyxj.dubbo.demo.api.DemoService"  id="demoService"/>
    <dubbo:reference interface="com.joyxj.dubbo.demo.api.UserService" id="userService"/>

</beans>

第四步:dubbo-demo-consumer模块启动类,加载spring配置和调用服务。

package com.joyxj.dubbo.demo.consumer;

import com.joyxj.dubbo.demo.api.DemoService;
import com.joyxj.dubbo.demo.api.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 基于spring的消费方启动类
 *
 * @author xiaoj
 * @version 1.0
 * @date 2019-04-18
 */
public class SpringConsumerApplication {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("application-consumer.xml");
        DemoService demoService = (DemoService) context.getBean("demoService");
        UserService userService = (UserService) context.getBean("userService");
        System.out.println(demoService.sayHello("xiaojun"));
        System.out.println(userService.getAge("xiaojun"));
    }
}

总结

本文主要是介绍了dubbo和spring的一个整合,官方推荐使用XML的方式,也就是基于spring的配置,同时这种方式也非常方便的进行本地开发调试。


   转载规则


《【dubbo系列】 02-基于spring加载dubbo配置》 孤独如梦 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
【dubbo系列】 04-dubbo 架构 【dubbo系列】 04-dubbo 架构
04 dubbo系列 | dubbo 架构首先来看一张dubbo官网提供的一张架构图: 各个节点角色的说明(架构图中的方框): Provider: 暴露服务的服务提供方 Consumer: 调用远程服务的服务消费方 Registry:
2019-05-31
下一篇 
hexo + next 博客系统优化和常用插件 hexo + next 博客系统优化和常用插件
一、hexo-symbols-count-time利用该插件可以增加文章字数统计及阅读时长功能 1.安装依赖yarn add hexo-symbols-count-time --save 2.站点配置文件修改# 增加字数统计 symbol
2019-05-30
  目录