首页 > 其他分享 >dubbo[3]_注解配置

dubbo[3]_注解配置

时间:2024-08-23 11:07:43浏览次数:4  
标签:dubbo 配置 yt context 注解 import com public

本文介绍注解方式配置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应用配置
     */
    @Bean
    public ApplicationConfig applicationConfig() {
        ApplicationConfig applicationConfig = new ApplicationConfig();
        applicationConfig.setName("myApp");
        applicationConfig.setOwner("yt");
        return applicationConfig;
    }

    /**
     * 配置服务提供者
     */
    @Bean
    public ProviderConfig providerConfig() {
        ProviderConfig providerConfig = new ProviderConfig();
        providerConfig.setTimeout(1000);
        return providerConfig;
    }

    /**
     * 注册中心配置 zookeeper
     */
    @Bean
    public RegistryConfig registryConfig() {
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setProtocol("zookeeper");
        registryConfig.setAddress("localhost:2181");
        registryConfig.setCheck(false);
        return registryConfig;
    }

    /**
     * 协议配置 dubbo:20880
     */
    @Bean
    public 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 {
    @Reference
    private 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 {
    /**
     * 应用配置
     */
    @Bean
    public ApplicationConfig applicationConfig() {
        ApplicationConfig applicationConfig = new ApplicationConfig();
        applicationConfig.setName("myApp");
        applicationConfig.setOwner("yt");
        return applicationConfig;
    }

    /**
     * 消费者配置
     */
    @Bean
    public ConsumerConfig consumerConfig() {
        ConsumerConfig consumerConfig = new ConsumerConfig();
        consumerConfig.setTimeout(3000);
        return consumerConfig;
    }

    /**
     * 注册中心配置
     */
    @Bean
    public 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容器中取得bean
        ConsumerService consumerService = context.getBean(ConsumerService.class);
        System.out.println("consumer:" + consumerService.sound());
    }
}

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

consumer:喵

标签:dubbo,配置,yt,context,注解,import,com,public
From: https://www.cnblogs.com/Aeons/p/18375596

相关文章

  • dubbo[2]_XML配置
    本文介绍了zookeeper的下载安装以及用xml配置服务消费者和提供者的例子。1.zookeeper下载安装本文的例子使用zookeeper作为注册中心。首先,从官网下载zookeeper,我选择的是ApacheZooKeeper3.6.3版本。下载完成后,解压到自己的目录。https://zookeeper.apache.org/releases.html......
  • dubbo[1]_概念
    dubbo是一种基于Java的高性能RPC框架,最初由阿里巴巴开发,2018年2月进入Apache孵化器。官方网站(本文第2,3部分摘自官网):https://dubbo.apache.org/zh/ApacheDubbo|ˈdʌbəʊ|提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和发现,高度可扩展能......
  • 旧电脑配置玩魔兽世界带不动?云电脑轻松解决,用ToDesk!
    最近魔兽世界重新回归,不少游戏老玩家都摩拳擦掌准备上线回忆青春,但发现手里的旧电脑早已带不动游戏,硬要打开很容易出现画面卡顿、延迟严重,甚至频繁掉线,这些问题都让游戏乐趣大打折扣。但要为此再重新买一台电脑,对钱包又不太友好。那不如听我一句劝,用上ToDesk云电脑立马解决!不需......
  • Java语法-注释 如何创建与配置空项目
    Java语法注释注释是给人看的,与代码执行无关单行注释//单行注释多行注释/*多行注释*/文档注释(JavaDoc:)/***//***@DscriptionHelloWorld*//****ii.;9ABH,*SA39......
  • centos7配置阿里云yum源镜像
    【阿里云镜像】切换阿里巴巴开源镜像站镜像——CentOS镜像2021-12-131866版权 简介: 阿里巴巴OPSX开源镜像站,提供CentOS、Debian、Ubuntu、Fedora、ArchLinux、Gentoo、openSUSE、ScientificLinux等主流发行版的软件源镜像。为阿里云和互联网用户提供免费高速的一......
  • 配置PXE预启动执行环境:使用PXE装机服务器网络引导装机
    文章目录PXE概述PXE批量部署的优点基本的部署过程搭建的前提条件搭建配置PXE装机服务器1.准备CentOS7安装源(YUM仓库)2.安装并启用TFTP服务3.安装并启用DHCP服务4.准备Linux内核和初始化镜像文件5.准备PXE引导程序6.安装FTP服务并准备CentOS7安装......
  • windows配置zed2相机环境
    准备工作1.确保电脑有独立显卡    如图,可以看到示例计算机中,有AMD独立显卡,而Intel为集成显卡。如果这里除了Intel集成显卡外,没有AMD、NVIDIA或者其他品牌显卡,则该计算机不是独显。2.安装anconda来创建zed环境     创建python=3.7的环境进行zed相机调试......
  • SpringMvc 以配置类的形式代替xml文件
    1、配置类1.1、创建Mvc项目之后创建MyWebApplicationInitializer类实现接口WebApplicationInitializerpublicclassMyWebApplicationInitializerimplementsWebApplicationInitializer{@OverridepublicvoidonStartup(ServletContextservletContext)thr......
  • springboot[2]_常用注解
    介绍一些常用注解。springBoot因为很少用到xml来配置bean文件,所以大部分都是用注解来创建和管理相关bean。@Component、@Service、@Repository和@Controller这几个注解效果都是差不多的,都是可以用来创建bean实例的。只是规定使用的方法不同而已。1.@Component自动被compo......
  • springboot[4]_配置mybatis
    在springboot中使用mybatis1.建表在test库中,建立一张animal表,并存入三条数据。CREATETABLE`test`.`animal`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(30)CHARACTERSETlatin1COLLATElatin1_swedish_ciNULLDEFAULTNULL,PRIMARYKEY(`id`)......