dubbo 服务调用说明


dubbo 服务调用说明

       

               

                                   

导入依赖

            

        <!-- 服务注册与发现 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!-- 服务调用 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
        </dependency>

               

                 

                                   

自动配置类

    

spring-cloud-starter-dubbo/spring.factories

         

# 自动配置类
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
 *元数据自动配置类
com.alibaba.cloud.dubbo.autoconfigure.DubboMetadataAutoConfiguration,\
 *服务调用自动配置类
com.alibaba.cloud.dubbo.autoconfigure.DubboOpenFeignAutoConfiguration,\
 *服务注册自动配置类
com.alibaba.cloud.dubbo.autoconfigure.DubboServiceRegistrationAutoConfiguration,\
 *非web应用自动注册配置类
com.alibaba.cloud.dubbo.autoconfigure.DubboServiceRegistrationNonWebApplicationAutoConfiguration,\
 *负载均衡调用自动配置类
com.alibaba.cloud.dubbo.autoconfigure.DubboLoadBalancedRestTemplateAutoConfiguration,\
 *dubbo服务自动配置类
com.alibaba.cloud.dubbo.autoconfigure.DubboServiceAutoConfiguration,\
 *服务发现自动配置类
com.alibaba.cloud.dubbo.autoconfigure.DubboServiceDiscoveryAutoConfiguration


org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration=\
com.alibaba.cloud.dubbo.actuate.DubboMetadataEndpointAutoConfiguration

org.springframework.context.ApplicationContextInitializer=\
com.alibaba.cloud.dubbo.context.DubboServiceRegistrationApplicationContextInitializer

org.springframework.boot.env.EnvironmentPostProcessor=\
com.alibaba.cloud.dubbo.env.DubboNonWebApplicationEnvironmentPostProcessor

             

dubbo-spring-boot-autoconfigure-compatible/spring.factories

         

# 自动配置类
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.apache.dubbo.spring.boot.autoconfigure.DubboAutoConfiguration,\
org.apache.dubbo.spring.boot.autoconfigure.DubboRelaxedBindingAutoConfiguration

org.springframework.context.ApplicationListener=\
org.apache.dubbo.spring.boot.context.event.OverrideDubboConfigApplicationListener,\
org.apache.dubbo.spring.boot.context.event.DubboConfigBeanDefinitionConflictApplicationListener,\
org.apache.dubbo.spring.boot.context.event.WelcomeLogoApplicationListener,\
org.apache.dubbo.spring.boot.context.event.AwaitingNonWebApplicationListener

org.springframework.boot.env.EnvironmentPostProcessor=\
org.apache.dubbo.spring.boot.env.DubboDefaultPropertiesEnvironmentPostProcessor
org.springframework.context.ApplicationContextInitializer=\
org.apache.dubbo.spring.boot.context.DubboApplicationContextInitializer

           

DubboAutoConfiguration

@ConditionalOnProperty(
    prefix = "dubbo",
    name = {"enabled"},
    matchIfMissing = true
)
@Configuration
@AutoConfigureAfter({DubboRelaxedBindingAutoConfiguration.class})
@EnableConfigurationProperties({DubboConfigurationProperties.class})  
                              //自动配置类DubboConfigurationProperties
@EnableDubboConfig
public class DubboAutoConfiguration implements ApplicationContextAware, BeanDefinitionRegistryPostProcessor {
    public DubboAutoConfiguration() {
    }

    @ConditionalOnProperty(
        prefix = "dubbo.scan.",
        name = {"base-packages"}
    )
    @ConditionalOnBean(
        name = {"dubbo-service-class-base-packages"}
    )
    @Bean
    public ServiceClassPostProcessor serviceClassPostProcessor(@Qualifier("dubbo-service-class-base-packages") Set<String> packagesToScan) {
        return new ServiceClassPostProcessor(packagesToScan);
    }

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if (applicationContext instanceof ConfigurableApplicationContext) {
            ConfigurableApplicationContext context = (ConfigurableApplicationContext)applicationContext;
            DubboLifecycleComponentApplicationListener dubboLifecycleComponentApplicationListener = new DubboLifecycleComponentApplicationListener();
            dubboLifecycleComponentApplicationListener.setApplicationContext(applicationContext);
            context.addApplicationListener(dubboLifecycleComponentApplicationListener);
            DubboBootstrapApplicationListener dubboBootstrapApplicationListener = new DubboBootstrapApplicationListener();
            dubboBootstrapApplicationListener.setApplicationContext(applicationContext);
            context.addApplicationListener(dubboBootstrapApplicationListener);
        }

    }

    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
        this.removeBeanDefinition(registry, "dubboLifecycleComponentApplicationListener");
        this.removeBeanDefinition(registry, "dubboBootstrapApplicationListener");
    }

    private void removeBeanDefinition(BeanDefinitionRegistry registry, String beanName) {
        if (registry.containsBeanDefinition(beanName)) {
            registry.removeBeanDefinition(beanName);
        }

    }

    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
    }
}

            

DubboConfigurationProperties

@ConfigurationProperties("dubbo")
public class DubboConfigurationProperties {
    @NestedConfigurationProperty
    private DubboConfigurationProperties.Config config = new DubboConfigurationProperties.Config();
    @NestedConfigurationProperty
    private DubboConfigurationProperties.Scan scan = new DubboConfigurationProperties.Scan();
    @NestedConfigurationProperty
    private ApplicationConfig application = new ApplicationConfig();  //应用配置
    @NestedConfigurationProperty
    private ModuleConfig module = new ModuleConfig();        //模块配置
    @NestedConfigurationProperty
    private RegistryConfig registry = new RegistryConfig();  //注册中心配置
    @NestedConfigurationProperty
    private ProtocolConfig protocol = new ProtocolConfig();  //protocol协议配置
    @NestedConfigurationProperty
    private MonitorConfig monitor = new MonitorConfig();     //监控中心配置
    @NestedConfigurationProperty
    private ProviderConfig provider = new ProviderConfig();  //provider配置
    @NestedConfigurationProperty
    private ConsumerConfig consumer = new ConsumerConfig();  //consumer配置
    @NestedConfigurationProperty
    private ConfigCenterBean configCenter = new ConfigCenterBean();  //配置中心配置
    @NestedConfigurationProperty
    private MetadataReportConfig metadataReport = new MetadataReportConfig();  //元数据中心配置

    private Map<String, ModuleConfig> modules = new LinkedHashMap();
    private Map<String, RegistryConfig> registries = new LinkedHashMap();
    private Map<String, ProtocolConfig> protocols = new LinkedHashMap();
    private Map<String, MonitorConfig> monitors = new LinkedHashMap();
    private Map<String, ProviderConfig> providers = new LinkedHashMap();
    private Map<String, ConsumerConfig> consumers = new LinkedHashMap();
    private Map<String, ConfigCenterBean> configCenters = new LinkedHashMap();
    private Map<String, MetadataReportConfig> metadataReports = new LinkedHashMap();

    public DubboConfigurationProperties() {
    }

           

ApplicationConfig

public class ApplicationConfig extends AbstractConfig {
    private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationConfig.class);
    private static final long serialVersionUID = 5508512956753757169L;
    private String name;
    private String version;
    private String owner;
    private String organization;
    private String architecture;
    private String environment;
    private String compiler;
    private String logger;
    private List<RegistryConfig> registries;
    private String registryIds;
    private MonitorConfig monitor;
    private Boolean isDefault;
    private String dumpDirectory;
    private Boolean qosEnable;
    private String qosHost;
    private Integer qosPort;
    private Boolean qosAcceptForeignIp;
    private Map<String, String> parameters;
    private String shutwait;
    private String hostname;
    private String metadataType;
    private Boolean registerConsumer;
    private String repository;

    public ApplicationConfig() {
    }

          

ModuleConfig

public class ModuleConfig extends AbstractConfig {
    private static final long serialVersionUID = 5508512956753757169L;
    private String name;
    private String version;
    private String owner;
    private String organization;
    private List<RegistryConfig> registries;
    private MonitorConfig monitor;
    private Boolean isDefault;

    public ModuleConfig() {
    }

         

RegistryConfig

public class RegistryConfig extends AbstractConfig {
    public static final String NO_AVAILABLE = "N/A";
    private static final long serialVersionUID = 5508512956753757169L;
    private String address;
    private String username;
    private String password;
    private Integer port;
    private String protocol;
    private String transporter;
    private String server;
    private String client;
    private String cluster;
    private String zone;
    private String group;
    private String version;
    private Integer timeout;
    private Integer session;
    private String file;
    private Integer wait;
    private Boolean check;
    private Boolean dynamic;
    private Boolean register;
    private Boolean subscribe;
    private Map<String, String> parameters;
    private Boolean isDefault;
    private Boolean simplified;
    private String extraKeys;
    private Boolean useAsConfigCenter;
    private Boolean useAsMetadataCenter;
    private String accepts;
    private Boolean preferred;
    private Integer weight;

    public RegistryConfig() {
    }

              

ProviderConfig

public class ProviderConfig extends AbstractServiceConfig {
    private static final long serialVersionUID = 6913423882496634749L;
    private String host;
    private Integer port;
    private String contextpath;
    private String threadpool;
    private String threadname;
    private Integer threads;
    private Integer iothreads;
    private Integer queues;
    private Integer accepts;
    private String codec;
    private String charset;
    private Integer payload;
    private Integer buffer;
    private String transporter;
    private String exchanger;
    private String dispatcher;
    private String networker;
    private String server;
    private String client;
    private String telnet;
    private String prompt;
    private String status;
    private Integer wait;
    private Boolean isDefault;

    public ProviderConfig() {
    }

         

ConsumerConfig

public class ConsumerConfig extends AbstractReferenceConfig {
    private static final long serialVersionUID = 2827274711143680600L;
    private Boolean isDefault;
    private String client;
    private String threadpool;
    private Integer corethreads;
    private Integer threads;
    private Integer queues;
    private Integer shareconnections;

    public ConsumerConfig() {
    }

         

ProtocolConfig

public class ProtocolConfig extends AbstractConfig {
    private static final long serialVersionUID = 6913423882496634749L;
    private String name;
    private String host;
    private Integer port;
    private String contextpath;
    private String threadpool;
    private String threadname;
    private Integer corethreads;
    private Integer threads;
    private Integer iothreads;
    private Integer queues;
    private Integer accepts;
    private String codec;
    private String serialization;
    private String charset;
    private Integer payload;
    private Integer buffer;
    private Integer heartbeat;
    private String accesslog;
    private String transporter;
    private String exchanger;
    private String dispatcher;
    private String networker;
    private String server;
    private String client;
    private String telnet;
    private String prompt;
    private String status;
    private Boolean register;
    private Boolean keepAlive;
    private String optimizer;
    private String extension;
    private Map<String, String> parameters;
    private Boolean isDefault;
    private Boolean sslEnabled;

    public ProtocolConfig() {
    }

      

MonitorConfig

public class MonitorConfig extends AbstractConfig {
    private static final long serialVersionUID = -1184681514659198203L;
    private String protocol;
    private String address;
    private String username;
    private String password;
    private String group;
    private String version;
    private String interval;
    private Map<String, String> parameters;
    private Boolean isDefault;

    public MonitorConfig() {
    }

          

ConfigCenterBean

public class ConfigCenterBean extends ConfigCenterConfig implements ApplicationContextAware, DisposableBean, EnvironmentAware {
    private transient ApplicationContext applicationContext;
    private Boolean includeSpringEnv = false;

    public ConfigCenterBean() {
    }

           

ConfigCenterConfig

public class ConfigCenterConfig extends AbstractConfig {
    private AtomicBoolean inited = new AtomicBoolean(false);
    private String protocol;
    private String address;
    private Integer port;
    private String cluster;
    private String namespace = "dubbo";
    private String group = "dubbo";
    private String username;
    private String password;
    private Long timeout = 3000L;
    private Boolean highestPriority = true;
    private Boolean check = true;
    private String configFile = "dubbo.properties";
    private String appConfigFile;
    private Map<String, String> parameters;
    private Map<String, String> externalConfiguration;
    private Map<String, String> appExternalConfiguration;

    public ConfigCenterConfig() {
    }

                

MetadataReportConfig

public class MetadataReportConfig extends AbstractConfig {
    private static final long serialVersionUID = 55233L;
    private static final String PREFIX_TAG = StringUtils.camelToSplitName(MetadataReportConfig.class.getSimpleName().substring(0, MetadataReportConfig.class.getSimpleName().length() - 6), "-");
    private String address;
    private String username;
    private String password;
    private Integer timeout;
    private String group;
    private Map<String, String> parameters;
    private Integer retryTimes;
    private Integer retryPeriod;
    private Boolean cycleReport;
    private Boolean syncReport;
    private Boolean cluster;

    public MetadataReportConfig() {
    }

              

          

                                   

相关注解

  

@EnableDubbo:开启dubbo服务暴露与注入

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@EnableDubboConfig
@DubboComponentScan
public @interface EnableDubbo {
    @AliasFor(
        annotation = DubboComponentScan.class,
        attribute = "basePackages"
    )
    String[] scanBasePackages() default {};

    @AliasFor(
        annotation = DubboComponentScan.class,
        attribute = "basePackageClasses"
    )
    Class<?>[] scanBasePackageClasses() default {};

    @AliasFor(
        annotation = EnableDubboConfig.class,
        attribute = "multiple"
    )
    boolean multipleConfig() default true;
}

   

@DubboService:服务暴露

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Inherited
public @interface DubboService {
    Class<?> interfaceClass() default void.class;

    String interfaceName() default "";

    String version() default "";

    String group() default "";

    String path() default "";

    boolean export() default true;

    String token() default "";

    boolean deprecated() default false;

    boolean dynamic() default true;

    String accesslog() default "";

    int executes() default 0;

    boolean register() default true;

    int weight() default 0;

    String document() default "";

    int delay() default 0;

    /** @deprecated */
    String local() default "";

    String stub() default "";

    String cluster() default "";

    String proxy() default "";

    int connections() default 0;

    int callbacks() default 1;

    String onconnect() default "";

    String ondisconnect() default "";

    String owner() default "";

    String layer() default "";

    int retries() default 2;

    String loadbalance() default "random";

    boolean async() default false;

    int actives() default 0;

    boolean sent() default false;

    String mock() default "";

    String validation() default "";

    int timeout() default 0;

    String cache() default "";

    String[] filter() default {};

    String[] listener() default {};

    String[] parameters() default {};

    String application() default "";

    String module() default "";

    String provider() default "";

    String[] protocol() default {};

    String monitor() default "";

    String[] registry() default {};

    String tag() default "";

    Method[] methods() default {};
}

          

@DubboReference:服务引用

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})
public @interface DubboReference {
    Class<?> interfaceClass() default void.class;

    String interfaceName() default "";

    String version() default "";

    String group() default "";

    String url() default "";

    String client() default "";

    boolean generic() default false;

    boolean injvm() default true;

    boolean check() default true;

    boolean init() default false;

    boolean lazy() default false;

    boolean stubevent() default false;

    String reconnect() default "";

    boolean sticky() default false;

    String proxy() default "";

    String stub() default "";

    String cluster() default "";

    int connections() default 0;

    int callbacks() default 0;

    String onconnect() default "";

    String ondisconnect() default "";

    String owner() default "";

    String layer() default "";

    int retries() default 2;

    String loadbalance() default "";

    boolean async() default false;

    int actives() default 0;

    boolean sent() default false;

    String mock() default "";

    String validation() default "";

    int timeout() default 0;

    String cache() default "";

    String[] filter() default {};

    String[] listener() default {};

    String[] parameters() default {};

    String application() default "";

    String module() default "";

    String consumer() default "";

    String monitor() default "";

    String[] registry() default {};

    String protocol() default "";

    String tag() default "";

    String merger() default "";

    Method[] methods() default {};

    String id() default "";

    String[] services() default {};
}

       

@Method:方法级别注解

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.ANNOTATION_TYPE})
@Inherited
public @interface Method {
    String name();

    int timeout() default -1;

    int retries() default -1;

    String loadbalance() default "";

    boolean async() default false;

    boolean sent() default true;

    int actives() default 0;

    int executes() default 0;

    boolean deprecated() default false;

    boolean sticky() default false;

    boolean isReturn() default true;

    String oninvoke() default "";

    String onreturn() default "";

    String onthrow() default "";

    String cache() default "";

    String validation() default "";

    String merger() default "";

    Argument[] arguments() default {};
}

          

          

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值