Springboot整合Dubbo

前:

为什么我要用Springboot和Dubbo来搭建这个demo,因为springboot自身和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。同时它集成了大量常用的第三方库配置,Spring Boot应用中这些第三方库几乎可以是零配置的开箱即用(out-of-the-box),大部分的 Spring Boot 应用都只需要非常少量的配置代码(基于 Java 的配置),不需要配置提供者和消费者的xml文件,开发者能够更加专注于业务逻辑。并且项目不需要发送到tomcat中使用SpringApplication.run就可以在Idea中充当容器启动服务。

1、Springboot空项目创建

next

next

next

web

创建完成

2、springboot-dubbo-provider模块创建

如创建空项目时在项目下创建模块,创建后模块中的pom.xml中追加dubbo和zookeeper的依赖

       <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
        <dependency>
            <groupId>io.dubbo.springboot</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>1.0.0</version>
        </dependency>

在项目的resources中application.properties中定义参数

spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=com.example.springboot.dubbo.provider
server.port=8082

创建demo接口version是重点,不能漏
com.example.springboot.dubbo.api.SayHello

package com.example.springboot.dubbo.api;

public interface SayHello {
    String sayHello(String name);
}

实现接口
con.example.springboot.dubbo.provider.SayHelloImpl

package com.example.springboot.dubbo.provider;
import com.alibaba.dubbo.config.annotation.Service;
import com.example.springboot.dubbo.api.SayHello;
@Service(version = "1.0.0")
public class SayHelloImpl implements SayHello {
    @Override
    public String sayHello(String name){
        return "Hello " + name + "!";
    }
}

启动服务提供者

package com.example.springboot.dubbo.provider;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;

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

3、springboot-dubbo-consumer模块创建

与provider模块一样的创建方式,配置pom.xml,追加dubbo依赖和provider

<dependency>
            <groupId>io.dubbo.springboot</groupId>
            <artifactId>spring-boot-starter-dubbo</artifactId>
            <version>1.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>springboot-dubbo-provider</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>

配置resources中application.properties

spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.scan=com.example.springboot.dubbo.consumer
server.port=8083

创建consumer接口,version是重点。
com.example.springboot.dubbo.api.SayHello

package com.example.springboot.dubbo.api;
public interface SayHello {
    String sayHello(String name);
}

实现接口

package com.example.springboot.dubbo.consumer;

import com.alibaba.dubbo.config.annotation.Reference;
import com.example.springboot.dubbo.api.*;
import org.springframework.stereotype.Component;

@Component
public class SayService  {
    @Reference
            (version = "1.0.0")
    SayHello sayHello;
    public String say (String name) {
        return sayHello.sayHello(name);
    }
}

启动服务消费者

package com.example.springboot.dubbo.consumer;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class Client {
    @Autowired
    SayService sayService;
    @RequestMapping("/hello")
    public String say(@RequestParam ("name") String name) {
        return sayService.say(name);
    }
    public static void main(String[] args) throws Exception{
        ConfigurableApplicationContext context = SpringApplication.run(Client.class, args);
    }
}

启动消费者,查看dubbo admin



调用消费者端口,传入参数,成功回显。


参考文章

1、IDEA构建springboot
2、springboot优点
3、springboot整合dubbo

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,...
    dalaoyang阅读 10,278评论 0 48
  • 我喜欢这样的感觉,一盏小台灯,一个不算太整洁的书桌,电脑上放着喜欢的纪录片《世界上另一个我》。 看了一会儿,写字,...
    楚河_阅读 3,180评论 0 2
  • 日记可以记录生活,生活能用什么留下吗
    德冰阅读 1,126评论 0 0
  • 2016年12月3日,刘某驾驶鲁B00000轿车(该车在保险公司投保)行驶到县城南门路段时,因避让行人,不慎撞到李...
    漫幽幽同学阅读 3,003评论 0 0
  • 五一过后身体突然非常难受,各种没精神,并且整天肋骨下面疼。 一开始是天气太热,晚上睡觉一直出汗,开空调空气又不好,...
    释放自我阅读 1,873评论 0 1

友情链接更多精彩内容