SpringBoot与Dubbo整合的方式详解

网友投稿 253 2022-12-27


SpringBoot与Dubbo整合的方式详解

1. 使用默认application.properties和注解的方式

导入dubbo-starter,在application.properties配置属性,使用@Service注解来暴露服务,使用@Reference来引用服务。具体可参考 Dubbo整合SpringBoot,这里截取部分代码方便理解。

属性在application.properties中配置

服务提供方使用@Service注解暴露服务

部分配置如“timeout”等可以在注解上添加

服务消费方使用@Reference注解来引用服务

2. 引入dubbo.xml配置文件

保留dubbo.xml配置文件,导入dubbo-starter,使用@ImportResource导入dubbo的配置文件即可。

如果要实现暴露服务中的某个方法的配置,@Service注解此时就无能为力了

xml配置文件中的标签可以实现该功能

这就要求我们引入xml配置文件,方法很简单,启动类中通过 @ImportResource 注解引入即可

3. 使用注解API的方式

依旧使用@Service注解来暴露服务,使用@Reference来引用服务。同时使用注解API的方式来替代xml配置文件中的标签,将每一个组件手动创建到容器中,让dubbo来扫描其他的组件。

注解类的配置主要有三点:①注解类加注解@Configuration;②每个注解项添加@Bean注入到容器中;③准确使用注解API。

以服务提供方式的注解类为例:

package com.zang.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.RegistryConfig;

import com.alibaba.dubbo.config.ServiceConfig;

import com.zang.gmall.service.UserService;

@Configuration

public class MyDubboConfig {

//

@Bean

public ApplicationConfig applicationConfig() {

ApplicationConfig applicationConfig = new ApplicationConfig();

applicationConfig.setName("user-service-provider");

return applicationConfig;

}

//

@Bean

public RegistryConfig registryConfig() {

RegistryConfig registryConfig = new RegistryConfig();

registryConfig.setProtocol("zookeeper");

registryConfig.setAddress("127.0.0.1:2181");

return registryConfig;

}

//略

/**

*

ref="userServiceImpl01" timeout="1000" version="1.0.0">

ref="userServiceImpl01" timeout="1000" version="1.0.0">

*/

@Bean

public ServiceConfig userServiceConfig(UserService userService){

ServiceConfig 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);

http:// //将method的设置关联到service配置中

List methods = new ArrayList<>();

mehttp://thods.add(methodConfig);

serviceConfig.setMethods(methods);

return serviceConfig;

}

}

使用@DubboComponentScan注解指定dubbo扫描路径。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java可变参数当做数组处理的方法示例
下一篇:api测试工具有哪些(api测试软件)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~