dubbo[3]_注解配置

news/2024/11/17 15:52:33/文章来源:https://www.cnblogs.com/Aeons/p/18375596

本文介绍注解方式配置dubbo的例子。

服务提供Provider

1. 定义接口Animal和实现类Cat

image

Animal:

public interface Animal {/*** 描述: 返回动物的叫声*/String sound();
}

Cat:

package com.yt.provider;import com.alibaba.dubbo.config.annotation.Service;@Service(timeout = 5000)
public class Cat implements Animal {public String sound() {return "喵";}
}

@Service: 注解配置,服务提供者的service

2. Provider配置类

package com.yt.provider;import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.ProviderConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author: yt* @date: 2021/5/13  21:40* @description:*/
@Configuration
@EnableDubbo(scanBasePackages = "com.yt.provider")
public class ProviderConfiguration {/*** dubbo应用配置*/@Beanpublic ApplicationConfig applicationConfig() {ApplicationConfig applicationConfig = new ApplicationConfig();applicationConfig.setName("myApp");applicationConfig.setOwner("yt");return applicationConfig;}/*** 配置服务提供者*/@Beanpublic ProviderConfig providerConfig() {ProviderConfig providerConfig = new ProviderConfig();providerConfig.setTimeout(1000);return providerConfig;}/*** 注册中心配置 zookeeper*/@Beanpublic RegistryConfig registryConfig() {RegistryConfig registryConfig = new RegistryConfig();registryConfig.setProtocol("zookeeper");registryConfig.setAddress("localhost:2181");registryConfig.setCheck(false);return registryConfig;}/*** 协议配置 dubbo:20880*/@Beanpublic ProtocolConfig protocolConfig() {ProtocolConfig protocolConfig = new ProtocolConfig();protocolConfig.setName("dubbo");protocolConfig.setPort(20880);return protocolConfig;}
}

@Configuration: 注解标明配置类,@EnableDubbo 指定扫描的包路径。

配置的内容主要有:

  • 应用配置 :类似 <dubbo:application 标签
  • 服务提供者配置:类似<dubbo:provider‘标签
  • 注册中心配置:类似<dubbo:registry 标签
  • 协议配置:类似 <dubbo:protocol 标签

3. 启动服务

public class Provider {public static void main(String[] args) throws IOException {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ProviderConfiguration.class);context.start();System.in.read();}
}

指定配置类之后,就可以启动。

服务消费Consumer

image

1. 创建服务消费service

package com.yt.consumer;import com.alibaba.dubbo.config.annotation.Reference;
import com.yt.provider.Animal;
import org.springframework.stereotype.Component;@Component
public class ConsumerService {@Referenceprivate Animal animal;public String sound() {return animal.sound();}
}

新建一个service类,加上@Component注解,将对象交给spring管理,之后加上@Reference注解注入Animal接口。

2. 服务消费配置类

package com.yt.consumer;import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ConsumerConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;/*** @author: yt* @date: 2021/5/13  21:52* @description:*/
@Configuration
@EnableDubbo(scanBasePackages = "com.yt.consumer")
@ComponentScan(value = {"com.yt.consumer"})
public class ConsumerConfiguration {/*** 应用配置*/@Beanpublic ApplicationConfig applicationConfig() {ApplicationConfig applicationConfig = new ApplicationConfig();applicationConfig.setName("myApp");applicationConfig.setOwner("yt");return applicationConfig;}/*** 消费者配置*/@Beanpublic ConsumerConfig consumerConfig() {ConsumerConfig consumerConfig = new ConsumerConfig();consumerConfig.setTimeout(3000);return consumerConfig;}/*** 注册中心配置*/@Beanpublic RegistryConfig registryConfig() {RegistryConfig registryConfig = new RegistryConfig();registryConfig.setProtocol("zookeeper");registryConfig.setAddress("localhost:2181");return registryConfig;}
}

跟服务提供者的配置类似。

@ComponentScan(value = {"com.yt.consumer"}) 指定要扫描component的包路径,扫描ConsumerService。

3. 启动服务

public class Consumer {public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConsumerConfiguration.class);context.start();// 从spring容器中取得beanConsumerService consumerService = context.getBean(ConsumerService.class);System.out.println("consumer:" + consumerService.sound());}
}

服务成功启动,并输出结果(记得启动zookeeper):

consumer:喵

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/785993.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dubbo[2]_XML配置

本文介绍了zookeeper的下载安装以及用xml配置服务消费者和提供者的例子。 1. zookeeper下载安装 本文的例子使用zookeeper作为注册中心。 首先,从官网下载zookeeper,我选择的是Apache ZooKeeper 3.6.3版本。下载完成后,解压到自己的目录。https://zookeeper.apache.org/rele…

2021-05-13-md1

本文介绍注解方式配置dubbo的例子。 服务提供Provider 1. 定义接口Animal和实现类CatAnimal: public interface Animal {/*** 描述: 返回动物的叫声*/String sound(); }Cat: package com.yt.provider;import com.alibaba.dubbo.config.annotation.Service;@Service(timeout = 5…

2021-05-12-md1

本文介绍了zookeeper的下载安装以及用xml配置服务消费者和提供者的例子。 1. zookeeper下载安装 本文的例子使用zookeeper作为注册中心。 首先,从官网下载zookeeper,我选择的是Apache ZooKeeper 3.6.3版本。下载完成后,解压到自己的目录。https://zookeeper.apache.org/rele…

Myslq千万级数据量查询

两千四百万数据量SQL查询没有索引时 如果字段无索引,耗时十分钟无索引查询过程 MySQL 需要对 2400 万条数据一一进行比较,假设每条记录的处理时间为 0.025 ms,那么总查询时间大约为 10 分钟(即 2400 万 0.025 ms)。 •全表扫描: 当查询 kh = 03356129487 时,如果表上没有…

001.MinIO简介

MinIO 简介 MinIO 是天然的云原生存储,可以作为轻量级容器运行,由相关编排服务(如 Kubernetes )管理。 整个服务器是一个不到100MB的静态二进制文件,并且在使用CPU和内存资源方面即使在高负载场景也非常高效,因此可以在共享硬件上共同托管大量租户。 MinIO 可以在任何地方和…

转载:国产麒麟v10、UOS系统在线比较两个Word文件的内容差异

调用PageOffice的WordCompare方法,同时在线打开两个Word文档,可以切换显示其中的一个文档,或者显示两个文档的对比结果,即可实现在线的文档内容比较功能。此功能可以应用在以下方面: 文档管理中,比较两个版本Word文档的差别。 在处理文档管理的Web项目中,比较两个版本的…

并发编程[5]_wait和notify

1. wait 和 notify wait() 方法是Object类中的方法,他的作用是让当前线程进入等待状态,而使用notify() 方法可以唤醒。wait(long): void ,参数是毫秒,表示等待毫秒数,直到时间结束或被唤醒; wait(long, int): void ,第一个参数是毫秒,第二个参数是纳秒,如果纳秒在0-99…

【2024-08-23】邬贺铨院士:大模型赋能企业数字化转型

一、AI的演进之路:从生成式AI到通用A1二、大模型的构建与应用:自建与协作开发的行业大模型2.1 自建基础大模型2.2 合作开发行业大模型三、对MaaS及其工具链的探索四、大模型推动云服务创新4.1 大模型时代对算力网络的要求4.2 大模型推动IaaS创新发展4.3 大模型催生AI PaaS创新…

.NET 8 + Vue 3 极简 RABC 权限管理系统

前言 在日常工作中,几乎每家公司都需要一个后台管理系统来处理各种任务。为了帮助大家快速搭建这样一个系统,给大家介绍一个基于最新技术 .NET 8 和前端框架 Vue 3 实现的极简 RABC(基于角色的访问控制)权限管理系统。 该系统后端采用经过精心精简的 ABP框架,前端则使用了…

ToDesk支持多系统互控,使用教程来了!

能多系统跨设备进行远控的软件被我找到了! 就是ToDesk远程控制👍官网就能免费下载使用 遇到公司电脑window系统,但家里笔记本手机是苹果再也不会束手无策了! 电脑手机平板都能互相远程控制,一个账号可登录多个设备 传输文件速度高达12m/s,画质高清还能匹配网速流畅度进行…

初识 Flutter

一、Flutter 简介 Flutter 是 Google 推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过 Dart 语言开发 App,一套代码同时运行在 iOS 和 Android平台。 Flutter 提供了丰富的组件、接口,开发者可以很快地为 Flutter 添加 Native(即原生开发,指基于…

Windows11下安装Docker

一、准备工作 先下载以下资源,暂时不要安装: Docker安装包 Wsl2安装包 二、开始安装 1.打开主板BIOS的虚拟化选项,可以在任务管理器中确实是否已经打开2.勾上虚拟机平台所有选项(建议完成这一步骤重启)3.用管理员身份打开PowerShell,执行下面命令启动wsl dism.exe /onlin…