天天看点

springboot+dubbo 整合 最简易环境搭建

关键说明:使用@Service注解来暴露服务,使用@Reference来引用服务

1 新建一个空工程

2 新建 maven工程 gonggongjiekou,此工程是作为 公用的接口,类 

//定义pojo
package cn.taobao.pojo;
import java.io.Serializable;
import java.util.Date;
 
public class News implements Serializable {
    private Integer id;
    private String title;
    private String contents;
    private Date shijian;
    //get set方法
}
           
//定义公用的 接口
package cn.taobao.Service;
import cn.taobao.pojo.News;
import java.util.List;
public interface NewsService {
 
    public List<News> getNewsList();
}
           
//pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>cn.taobao</groupId>
    <artifactId>gonggongjiekou</artifactId>
    <version>1.0-SNAPSHOT</version>
 
</project>
           

3 新建服务提供者工程 provider_boot_1

//添加如下依赖
<!--公用接口-->
<dependency>
            <groupId>cn.taobao</groupId>
            <artifactId>gonggongjiekou</artifactId>
            <version>1.0-SNAPSHOT</version>
</dependency>

<!--引入dubbo环境-->
<dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
</dependency>
           
//接口实现类,服务提供者
package cn.taobao.provider_boot_1.service;
import cn.taobao.Service.NewsService;
import cn.taobao.pojo.News;
import com.alibaba.dubbo.config.annotation.Service;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

//注意这里的service注解使用的是dubbo的注解
@Service
public class newsServiceImpl implements NewsService {
    @Override
    public List<News> getNewsList() {
        News news_1 = new News(1, "java", "java入门", new Date());
        News news_2 = new News(2, "dubbo", "dubbo入门", new Date());
        News news_3 = new News(3, "redis", "redis入门", new Date());
        return Arrays.asList(news_1,news_2,news_3);
    }
}
           
//application.yml文件配置
dubbo:
  application:
    name: dubbo_boot-provider
  registry:
    address: 127.0.0.1:2181
    # 读者请自行更改zookeeper地址
    protocol: zookeeper
    check: false
  protocol:
    name: dubbo
    port: 30003
  monitor:
    protocol: register
  consumer:
    check: false
    timeout: 3000

server:
  port: 8061
           
//项目启动类上添加@EnableDubbo注解
package cn.taobao.provider_boot_1;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//开启dubbo注解
@EnableDubbo
@SpringBootApplication
public class ProviderBoot1Application {
    public static void main(String[] args) {
        SpringApplication.run(ProviderBoot1Application.class, args);
    }
}
           

4 新建消费者工程 consumer_springboot_1

//添加如下依赖
<!--公用接口-->
<dependency>
            <groupId>cn.taobao</groupId>
            <artifactId>gonggongjiekou</artifactId>
            <version>1.0-SNAPSHOT</version>
</dependency>

<!--引入dubbo环境-->
<dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
</dependency>
           
//调用服务,注意下面引用接口是dubbo的注解
package cn.taobao.consumer_springboot_1.control;
import cn.taobao.Service.NewsService;
import cn.taobao.pojo.News;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;

@Controller
@ResponseBody
public class test_1 {

    //注意这里引用接口是dubbo的注解
    @Reference
    private NewsService newsService;

    @RequestMapping(value = "newslist")
    public List<News> testdubbofangfa1()
    {
        List<News> newsList = newsService.getNewsList();
        return newsList;
    }
}
           
//application.yml文件配置
dubbo:
  application:
    name:  springboot_dubbo-consumer
  registry:
    address: 127.0.0.1:2181
    # 读者请换成自己的zookeeperip
    protocol: zookeeper
    check: false
  monitor:
    protocol: register
  consumer:
    check:  false
    timeout: 3000

server:
  port: 8062
           
// 项目启动类上添加@EnableDubbo的注解
package cn.taobao.consumer_springboot_1;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

5 进行测试,zookeeper 服务要先启动,然后分开启动服务提供者和服务消费者

继续阅读