我是靠谱客的博主 细腻铃铛,最近开发中收集的这篇文章主要介绍dubbo注入找不到bean_Dubbo和Zookeeper入门案例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • 创建provier
  • 注意:类型必须为jar类型
  • 标签:

26a316a63126a1ca9f78e3604e4982ed.png
  • pom文件
  • exclusions标签的作用:
      • 1.根据构件坐标祛除在当前包内依赖的包
<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>com.sxt</groupId>
	<artifactId>12-dubbo-provier</artifactId>
	<version>0.0.1-SNAPSHOT</version>

	<!-- 导入dubbo的坐标 -->

	<dependencies>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.6.5</version>
			<!-- 去除指定的依赖 
				1.添加此标签将会去除当前dubbo依赖的构件
			-->
			<exclusions>
				<exclusion>
					<!-- 填入依赖的iD -->
					<groupId></groupId>
					<!-- 填入项目项名称 -->
					<artifactId></artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>
</project>
  • pom文件的配置
  • 引入的坐标
      • Maven提供的dubbo的坐标
      • 注册中心连接的zookeeper的坐标
      • org.apache.curator坐标
<dependencies>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.6.5</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
		<!-- 注册连接zookeeper的连接jar工具 -->
		<dependency>
			<groupId>com.101tec</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.10</version>
		</dependency>
		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-recipes</artifactId>
			<version>4.0.1</version>
		</dependency>
	</dependencies>
</project>
  • spring文件配置
  • 配置的步骤
  • 1.配置应用的名称
  • 2.配置应用集群的地址
    • 集群地址要全部加入到配置中每个集群的IP+port使用逗号进行分割
  • 3.配置协议和端口
  • 4.引入服务接口
	<!-- 给当前的应用起个名字 -->
	<dubbo:application name="demo-dubbo"></dubbo:application>
	<!-- 配置注册中心 
		1.address:注册中心IP地址,注意zookeeper是一个集群,如果是集群则需要将所有的zookeeper的IP和端口都注册
		每个使用逗号分割
		2.protocol:注册中心的类型
	-->		
	<dubbo:registry address="192.168.177.128:2181,192.168.177.128:2183,192.168.177.128:2183" protocol="zookeeper"></dubbo:registry>
	
	<!-- 配置协议和 端口-->
	<dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
	<!-- 注册接口 -->
	<bean id="dubboServiceImpl" class="com.sxt.service.impl.DubboServiceImpl"></bean>
 	<!-- 引用注册的接口 -->
	<dubbo:service interface="com.sxt.service.DubboService" ref="dubboServiceImpl"></dubbo:service>	        
					        
</beans>
  • 服务启动的办法
      • 1.使用SpringAPI进行启动使用ClassPathXmlApplicationContext类读取文件进行启动
      • 2.使用Dubbo提供的Main类进行启动(这里使用Main进行启动)
      • 3.创建Main文件的读取位置

8bc4f5f59cf27cfef04f7ad10bb3b2bd.png
public class Start {
	public static void main(String[] args) {
		/**
		 * 使用Main类进行启动的时候文件的默认读取位置为classpath下的META-INF/spring/*.xml
		 * 文件进行读取的
		 */
		Main.main(args);
	}

723261be7a8ea9d4579c4a3f664afdf3.png
  • 查看zookeeper集群内的信息
  • 成功发布后出现dubbo的文件夹

fdb6fb9fc4a7204446f1b61a3bb7fb2f.png
  • 进去子目录我们发现了我们写的接口全类名

d38844f752f374746cdb4d1f50d92b45.png
  • 在进入子目录发现providers

47a52d764130c6dda8e2a695d40cebfe.png
  • 在进入就是我们发布的信息了

ae55d945665f5e5cdc36448b08dad435.png
  • 看到这一串返回的其实包括了主机的IP地址,接口,接口内的方法,当前应用的名称,以及框架的版本
  • 转换的结果(网上找的)
dubbo%3A%2F%2F192.168.2.108%3A20880%2Fcom.bjsxt.service.DubboService%3Fanyh
ost%3Dtrue%26application%3Dmyprovider%26dubbo%3D2.5.4%26generic%3Dfalse%26interfa
ce%3Dcom.bjsxt.service.DubboService%26methods%3DshowMsg%26pid%3D3936%26side%3
Dprovider%26timestamp%3D1536807891514
dubbo://192.168.2.108:20880/com.bjsxt.service.DubboService?anyhost=true&application=m
yprovider&dubbo=2.5.4&generic=false&interface=com.bjsxt.service.DubboService&methods=sh
owMsg&pid=3936&side=provider×tamp=1536807891514

  • Dubbo Admin 管理平台搭建

3.1安装 Admin 管理平台

Admin 管理平台是一个 war 项目

在 Linux 系统中安装 JDK 以及 tomcat。

使用 unzip 命令解压 zip 压缩包。

删除 tomcat/webapps 目录下的 ROOT 目录

将解压出来的 ROOT 目录拷贝到 tomcat/webapps 目录下

3.2配置 Admin 管理平台

  • 在ROOT/WEB-INF找到dubbo.properties文件里面有平台登录的密码和账号

cc4d124c2426d82263f5edd09474f097.png

f80ef5a14656e993a8a6468e002b01be.png

Dubbo 测试 Consume

  • 创建Consume工程
      • 此工程一般为war工程,方便测试这里为jar工程
      • 要有和provider工程的pom文件保持一致(在架构解释过Consume也是要根据Dubbo的配置进行开发的)
      • pom文件配置
	<dependencies>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.6.5</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
		<!-- 注册连接zookeeper的连接jar工具 -->
		<dependency>
			<groupId>com.101tec</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.10</version>
		</dependency>
		<dependency>
			<groupId>org.apache.curator</groupId>
			<artifactId>curator-recipes</artifactId>
			<version>4.0.1</version>
		</dependency>
		<dependency>
			<groupId>com.sxt</groupId>
			<artifactId>12-dubbo-provier</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
	</dependencies>

5b88c7e0a637321afc4800ee3d4b5d39.png
  • 入门的测试进行测试的时候我们将provider引入到了consumer内这时他们是依赖关系就算不使用Dubbo都能调用,这是和使用Dubbo的是无影响的,只是将这个流程搭建一遍,体验下Dubbo的运行过程
  • Spring容器的配置文件信息
  • Consumer需要注册
      • 1.应用的名称dubbo:application
      • 2.dubbo:registry:连接的zookeeper集群地址和端口,方式
      • 3.dubbo:reference:服务接口的信息该节点是用于利用proxy动态的创建一个的服务接口的实现类对象的
          • 1.写入要调用的接口的信息的
          • 2.dubbo通过此配置获取接口的代理对象通过Spring容器对我们在UserService中的调用的com.sxt.service.DubboService实现类进行值的注入
<!-- 扫描指定Service的注解 -->        
	<context:component-scan base-package="com.sxt.service"></context:component-scan>
	<!-- 给当前的应用起个名字 -->
	<dubbo:application name="demo-dubbo-consumer"></dubbo:application>
	<!-- 配置注册中心 
		1.address:注册中心IP地址,注意zookeeper是一个集群,如果是集群则需要将所有的zookeeper的IP和端口都注册
		每个使用逗号分割
		2.protocol:注册中心的类型
	-->		
	<dubbo:registry address="192.168.177.128:2181,192.168.177.128:2183,192.168.177.128:2183" protocol="zookeeper"></dubbo:registry>
	<!-- 
		1.写入要调用的接口的信息的
		2.dubbo通过此配置获取接口的代理对象通过Spring容器对我们在UserService中的调用的
		com.sxt.service.DubboService实现类进行值的注入
	 -->
	<dubbo:reference  id = "dubboService" interface="com.sxt.service.DubboService"></dubbo:reference>
  • 测试代码:
      • 测试接口实现类
@Service
public class UserServiceImpl implements UserService {

	
	/**
	 * 此对象的创建是根据的dubbo的代理对象创建的当Consumer启动的调用指定的接口的时候
	 * 会使用proxy创建一个该接口的代理对象通过代理对象对接口内的方法进行调用,所以在进行打印dubboService
	 * 的值的时候会打印一个的代理对象的地址
	 */
	@Autowired
	private DubboService dubboService;
	
	@Override
	public void test(String msg) {
		System.out.println(dubboService);
		String var = dubboService.showMsg(msg);
		System.out.println(var);
	}

}
public class TestConsumer {
	public static void main(String[] args) {
		ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
		UserService bean = (UserService)ac.getBean(UserService.class);
		bean.test("Consumer");
	}
}
  • 运行结果
  • 执行的流程
      • 1.Consumer启动后会从注册中心下载服务列表
      • 2.根据Dubbo的动态代理创建服务接口的实例对象
      • 3.通过Spring给的实例对象注入
      • 4.通过该注入对象对接口的方法进行调用实现业务

3d2f8a6c3aa31541ecc6596e14a77464.png

最后

以上就是细腻铃铛为你收集整理的dubbo注入找不到bean_Dubbo和Zookeeper入门案例的全部内容,希望文章能够帮你解决dubbo注入找不到bean_Dubbo和Zookeeper入门案例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部