關鍵說明:使用@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 服務要先啟動,然後分開啟動服務提供者和服務消費者