版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38750084/article/details/84489870
创建maven项目之consumer,同创建provider一样。
pom添加:
先创建接口:
写实现:
写实现逻辑:
package com.testDubo.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.testDubo.service.UserService;
import com.testDubo.service.UserServiceConsumer;
/**
* 服务消费者代码
* 不考虑Dubbo技术问题,只考虑当前对象在spring容易中的管理问题
* @author Administrator
*
*/
@Service //用spring的注解
public class UserServiceConsumerImpl implements UserServiceConsumer {
//需要通过spring注入,注入的是接口的代理对象,由接口+订阅的服务信息+JDK的proxyy实现。
//动态代理对象的具体创建逻辑由Dubbo技术提供
//dubbo技术提供了reference注解,替代后续定义的标签,有代码冲突。
@Autowired
private UserService userService; //调用provider的实现
public void register(String name, String password) {
//具体逻辑由provider提供
System.out.println("cousumer调用provider的register...");
//调用Provider代码,需要定义属性,提供对象引用
userService.register(name, password);//调用provider的实现
}
public void login(String name, String password) {
System.out.println("consumer调用provider的login...");
userService.login(name, password);//调用provider的实现
}
}
然后配置文件:
resource目录下创建spring目录
代码:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 1.配置dubbo的应用名称-->
<dubbo:application name="test-consumer-001"/>
<!-- 2.配置dubbo的注册中心-->
<dubbo:registry address ="192.168.1.28:2181" protocol="zookeeper" />
<!-- 3.配置dubbo的订阅服务内容,要订阅哪一个接口服务信息
consumer不需要定义协议,因为协议信息由服务的提供者定义。
reference - 引用,是要订阅注册中心中的服务信息。
订阅成功后,在spring容器中,依赖容易和dubbo技术,创建代理对象。
创建的代理对象命名为id属性值。建议id属性值命名和consumer中引用的属性名称一致。
interface - 要订阅的具体的服务接口命名,就是provider发布的服务接口命名。
-->
<dubbo:reference interface="com.testDubo.service.UserService" id="userService" />
<!-- 配置扫描spring注解 -->
<context:component-scan base-package="com.testDubo.service"></context:component-scan>
</beans>
写测试:
生产者消费者同时打印: