关键说明:使用@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 服务要先启动,然后分开启动服务提供者和服务消费者