天天看點

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 服務要先啟動,然後分開啟動服務提供者和服務消費者

繼續閱讀