首先看看整个项目的目录 boot-user-service-provider 服务提供方 boot-order-service-consumer 服务消费方:
1.先添加dubbbo 依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
在服务提供方添加一个服务提供service,代码如下:
import java.util.Arrays;
import java.util.List;
import org.springframework.stereotype.Component;
import com.alibaba.dubbo.config.annotation.Service;
import com.atguigu.gmall.bean.UserAddress;
import com.atguigu.gmall.service.UserService;
@Service
@Component
public class UserServiceImpl implements UserService {
@Override
public List<UserAddress> getUserAddressList(String userId) {
System.out.println("UserServiceImpl.....old...");
// TODO Auto-generated method stub
UserAddress address1 = new UserAddress(1, "北京市昌平区宏福科技园综合楼3层", "1", "李老师", "010-56253825", "Y");
UserAddress address2 = new UserAddress(2, "深圳市宝安区西部硅谷大厦B座3层(深圳分校)", "1", "王老师", "010-56253825", "N");
/*try {
Thread.sleep(4000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
return Arrays.asList(address1,address2);
}
}
2.在application.properties 添加dubbo 的配置
dubbo.application.name=user-service-provider //服务名称
dubbo.registry.address=192.168.86.1:2181 //注册服务地址
dubbo.registry.protocol=zookeeper //注册协议
dubbo.protocol.name=dubbo //协议名称
dubbo.protocol.port=20880 //协议端口3.在启动类上面添加 @EnableDubbo
====================================================================
4.添加dubbbo 依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
编写消费端代码如下
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.atguigu.gmall.bean.UserAddress;
import com.atguigu.gmall.service.impl.OrderServiceImpl;
@RestController
public class OrderController {
@Autowired
private OrderServiceImpl orderService;
@RequestMapping("/initOrder")
public List<UserAddress> initOrder(@RequestParam("uid") String userId) {
return orderService.initOrder(userId);
}
}
import java.util.List;
import org.springframework.stereotype.Service;
import com.alibaba.dubbo.config.annotation.Reference;
import com.atguigu.gmall.bean.UserAddress;
import com.atguigu.gmall.service.OrderService;
import com.atguigu.gmall.service.UserService;
/**
* 服务消费
* 使用@Reference 去引用服务
* @author 26918
*
*/
@Service
public class OrderServiceImpl implements OrderService {
// @Autowired
@Reference
UserService userService;
@Override
public List<UserAddress> initOrder(String userId) {
// TODO Auto-generated method stub
List<UserAddress> list = userService.getUserAddressList(userId);
System.out.println("list::"+list.size());
return list;
}
}
5.配置服务消费application.properties
server.port=8082 //避免和zookeeper服务重叠,另外定义一个服务端口
dubbo.application.name=boot-order-service-consumer //消费服务名称
dubbo.registry.address=zookeeper://192.168.86.1:2181 //添加注册地址
dubbo.monitor.protocol=registry //添加监控协议
测试之前需要启用dubbbo admin 查看服务,和zookeeper 服务;