zoukankan      html  css  js  c++  java
  • Spring boot配置Dubbo三种方式

    方式一

    使用注解的方式

    导入dubbo-starter 
    在application.properties配置属性

    使用@Service暴露服务 
    使用@Reference引用服务

    使用@EnableDubbo开启注解Dubbo功能 
    或者配置包扫描

    dubbo.scan.base-packages=com.atguigu.gmall

    开启注解、包扫描,配置一个即可

    这种方式 
    可以在@Service、@Reference注解中配置属性 
    属于类的配置,无法精确到方法的配置

    方式二

    使用dubbo的xml配置文件

    导入dubbo-starter 
    使用@ImportResource导入dubbo的配置文件即可

    @ImportResource(locations="classpath:provider.xml")

    dubbo的配置文件,之前怎么写 
    现在还是怎么写,没有特殊要求

    这种方式 
    可以做到方法的精确配置

    方式三

    使用注解API的方式

    将每一个组件手动创建到容器中 
    让dubbo来扫描其他的组件

    参考文档 
    http://dubbo.apache.org/zh-cn/docs/user/configuration/annotation.html 

    package com.atguigu.gmall.config;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import com.alibaba.dubbo.config.ApplicationConfig;
    import com.alibaba.dubbo.config.MethodConfig;
    import com.alibaba.dubbo.config.MonitorConfig;
    import com.alibaba.dubbo.config.ProtocolConfig;
    import com.alibaba.dubbo.config.ProviderConfig;
    import com.alibaba.dubbo.config.RegistryConfig;
    import com.alibaba.dubbo.config.ServiceConfig;
    import com.atguigu.gmall.service.UserService;
    
    @Configuration
    public class MyDubboConfig {
    
        //<dubbo:application name="boot-user-service-provider"></dubbo:application>
        @Bean
        public ApplicationConfig applicationConfig() {
            ApplicationConfig applicationConfig = new ApplicationConfig();
            applicationConfig.setName("boot-user-service-provider");
            return applicationConfig;
        }
    
        //<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"></dubbo:registry>
        @Bean
        public RegistryConfig registryConfig() {
            RegistryConfig registryConfig = new RegistryConfig();
            registryConfig.setProtocol("zookeeper");
            registryConfig.setAddress("127.0.0.1:2181");
            return registryConfig;
        }
    
        //<dubbo:protocol name="dubbo" port="20882"></dubbo:protocol>
        @Bean
        public ProtocolConfig protocolConfig() {
            ProtocolConfig protocolConfig = new ProtocolConfig();
            protocolConfig.setName("dubbo");
            protocolConfig.setPort(20882);
            return protocolConfig;
        }
    
        /**
         *<dubbo:service interface="com.atguigu.gmall.service.UserService" 
            ref="userServiceImpl01" timeout="1000" version="1.0.0">
            <dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
        </dubbo:service>
         */
        @Bean
        public ServiceConfig<UserService> userServiceConfig(UserService userService){
            ServiceConfig<UserService> serviceConfig = new ServiceConfig<>();
            serviceConfig.setInterface(UserService.class);
            serviceConfig.setRef(userService);
            serviceConfig.setVersion("1.0.0");
    
            //配置每一个method的信息
            MethodConfig methodConfig = new MethodConfig();
            methodConfig.setName("getUserAddressList");
            methodConfig.setTimeout(1000);
    
            //将method的设置关联到service配置中
            List<MethodConfig> methods = new ArrayList<>();
            methods.add(methodConfig);
            serviceConfig.setMethods(methods);
    
            //ProviderConfig
            //MonitorConfig
    
            return serviceConfig;
        }
    
    }

    配置包扫描路径

    可以,使用@DubboComponentScan注解 
    也可以,使用@EnableDubbo注解

    @EnableDubbo注解 
    其实,里面配置的就是@DubboComponentScan注解 

    扫描包路径:

    @EnableDubbo(scanBasePackages="com.atguigu.gmall")

    或者

    @DubboComponentScan(basePackages ="com.atguigu.gmall")

    生产者、消费者 
    使用@Service、@Reference注解配置

  • 相关阅读:
    Components controls 区别
    lazarus 2016 2月18 4:22:35 支持android开发了, 既ios,linux,macosx,window,web 后 囊括一切啦。 哈哈
    Delphi MlSkin V1.1 发布啦! 它能让你的程序拥有像QQ一样多彩炫丽的外观!
    Tclientdataset的CloneCursor问题 clientdataset 复制 赋值 的问题
    字符串 映射 函数
    字符串 映射相应的 函数 字符串驱动技术—— MethodAddress , MethodName , ObjectInvoke
    一分钟了解nohup和&的功效
    Linux shell标准输入,标准输出,错误输出
    (一)shell编程之执行脚本的三种方式
    Shell:执行脚本文件方法
  • 原文地址:https://www.cnblogs.com/MagicAsa/p/10907220.html
Copyright © 2011-2022 走看看