SpringBoot整合Dubbo方式之XML

,1,创建3个Maven模块,一个dubbo-server作为服务方,一个dubbo-consumer作为消费方,一个common-service作为公共的接口jar包,dubbo-server和dubbo-consumer都引入common-service的依赖。注意启动顺序,首先启动ZK,然后启动dubbo-server,最后启动dubbo-consumer

项目文件层级如图:

1,引入依赖,写springboot-test的pom.xml里面,

     <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.22.RELEASE</version>
    </parent>


     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
     </dependency>


<!-- dubbo,如果引入了dubbo的Springboot Starter,就不用再引入这个包了,否则可能因为dubbo版本冲突导致启动失败  -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>dubbo</artifactId>
      <version>2.5.9</version>
    </dependency>
    <!-- zookeeper  -->
    <dependency>
      <groupId>org.apache.zookeeper</groupId>
      <artifactId>zookeeper</artifactId>
      <version>3.4.6</version>
      <exclusions>
        <exclusion>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <!-- zookeeper客户端依赖 -->
    <dependency>
      <groupId>com.github.sgroschupf</groupId>
      <artifactId>zkclient</artifactId>
      <version>0.1</version>
    </dependency>
   

2,在common-service建立公共的接口,DemoService

public interface DemoService {
    public void test();
}

3,dubbo-server服务方配置

@SpringBootApplication
@ImportResource("dubbo-server.xml")
public class ServerApplication implements CommandLineRunner {

    private static final Logger log = LoggerFactory.getLogger(ServerApplication.class);

    @Override
    public void run(String... arg0) throws Exception {
        System.out.println(">>>>>>>>>>>>>>>[ClientApplication start success]<<<<<<<<<<<<<");
        log.info(">>>>>>>>>>>>>>>[ServerApplication start success]<<<<<<<<<<<<<");
    }

    public static void main(String[] args) {
        SpringApplication.run(ServerApplication.class, args);
    }

}

dubbo配置文件dubbo-server.xml:

<?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://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name = "dubbo-server" />

    <!--zookeeper注册中心 -->
    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />

    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />

    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.tiger.test.DemoService" ref="demoService"/>
    <!-- 具体的实现bean -->
    <bean id="demoService" class="com.tiger.service.DemoServiceImpl" />
</beans>

服务具体实现类:

import com.tiger.test.DemoService;
import org.springframework.stereotype.Service;

/**
 * @description:
 * @author: tiger
 * @create: 2020-04-22
 */
@Service
public class DemoServiceImpl implements DemoService {

    @Override
    public void test() {
        System.out.println("hello,我是服务方");
    }
}

4,dubbo-consumer 消费方配置:

@SpringBootApplication
@ImportResource("dubbo-consumer.xml")
public class ComsumerApplication implements CommandLineRunner {

    private static final Logger log = LoggerFactory.getLogger(ComsumerApplication.class);

    @Override
    public void run(String... arg0) throws Exception {
        System.out.println(">>>>>>>>>>>>>>>[ClientApplication start success]<<<<<<<<<<<<<");
        log.info(">>>>>>>>>>>>>>>[ComsumerApplication start success]<<<<<<<<<<<<<");
    }

    public static void main(String[] args) {
        SpringApplication.run(ComsumerApplication.class, args);
    }

}

dubbo配置文件dubbo-consumer.xml:

<?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://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">


    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="dubbo-client"/>
    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
    <dubbo:reference id="demoService" interface="com.tiger.test.DemoService"/>

</beans>

5,测试类:

@RestController
public class TestController {

    @Autowired(required = false)
    DemoService demoService;

    @RequestMapping("/test")
    public void test(){
        demoService.test();
    }
}

 

选择合适的dubbo的版本,否则启动各种各样的报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值