随笔 - 1162  文章 - 0  评论 - 16  阅读 - 59万 

一、Dubbo 配置与 SpringBoot 整合 的三种方式

1、方式一

1)导入 dubbo-starter 依赖,在 application.properties 配置属性

dubbo.application.name=boot-order-service-consumer
dubbo.registry.protocol=zookeeper
dubbo.registry.address=127.0.0.1:2181

dubbo.protocol.name=dubbo
dubbo.protocol.port=20881

dubbo.monitor.protocol=registry

#dubbo.scan.base-packages=

2)使用 @Service【暴露服务】,使用 @Reference【引用服务】

暴露服务:

@Component
@Service  //dubbo注解,暴露服务
public class UserServiceImpl implements UserService {

    @Override
    public List<UserAddress> getUserAddressList(String userId) {
        UserAddress address1 = new UserAddress(1"北京市昌平区宏福科技园综合楼3层""1""李老师""010-56253825""Y");
        UserAddress address2 = new UserAddress(2"深圳市宝安区西部硅谷大厦B座3层(深圳分校)""1""王老师""010-56253825""N");
        return Arrays.asList(address1,address2);
    }
}

引用服务:

@Service
public class OrderServiceImpl implements OrderService {

    @Reference  //引用服务
    UserService userService;

    @Override
    public List<UserAddress> initOrder(String userId) {
        System.out.println("用户ID:" + userId);
        //1.查询用户的收货地址
        List<UserAddress> userAddressList = userService.getUserAddressList(userId);
        System.out.println("userAddressList = " + userAddressList);

        userAddressList.forEach(t -> System.out.println(t.getUserAddress()));
        System.out.println("调用完成!");
        return userAddressList;
    }
}

3)使用 @EnableDubbo 开启基于注解的 Dubbo 功能或者使用 dubbo.scan.base-packages 指定要扫描的包

@EnableDubbo  //开启基于注解的 dubbo 功能
@SpringBootApplication
public class BootUserServiceProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(BootUserServiceProviderApplication.class, args);
    }

}

2、方式二:保留 dubbo xml 配置文件

1)导入 dubbo-starter 依赖,使用 @ImportResource 导入类路径下的 配置文件

保留之前的配置文件

2)@ImportResource(locations = "classpath:provider.xml") 导入配置文件

@ImportResource(locations = "classpath:provider.xml")
@SpringBootApplication
public class BootUserServiceProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(BootUserServiceProviderApplication.class, args);
    }

}

3、方式三:使用注解 API 方式

1)将每一个组件手动创建到容器中

@Configuration
public class MyDubboConfig {

    @Bean
    public ApplicationConfig applicationConfig() {
        // 当前应用配置
        ApplicationConfig application = new ApplicationConfig();
        application.setName("boot-user-provider");

        return application;
    }

    //<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.njf.gmall.service.UserService" ref="userServiceImpl01" timeout="1000" version="1.0.0"/>
    //<!--<dubbo:method name="getUserAddressList" timeout="1000" retries="3"></dubbo:method>-->
    @Bean
    public ServiceConfig<UserServiceuserServiceConfig(UserService userService) {
        ServiceConfig<UserService> serviceConfig = new ServiceConfig<>();

        serviceConfig.setInterface(UserService.class);
        serviceConfig.setRef(userService);
        serviceConfig.setTimeout(1000);
        serviceConfig.setVersion("1.0.1");

        //在 service 中配置 method 的信息
        MethodConfig methodConfig = new MethodConfig();
        methodConfig.setName("getUserAddressList");
        methodConfig.setTimeout(1000);

        //将 method 的设置关联到 service 配置中
        serviceConfig.setMethods(Arrays.asList(methodConfig));

        return serviceConfig;
    }

}

2)让 dubbo 来扫描其他配置的组件

@DubboComponentScan(basePackages = {"com.njf.gmall"})  //扫描dubbo配置组件所在包
@EnableDubbo  //开启基于注解的 dubbo 功能
@SpringBootApplication
public class BootUserServiceProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(BootUserServiceProviderApplication.class, args);
    }

}

更多 API 设置参考官网:

手册:https://dubbo.apache.org/zh/docs/references/api/

API 配置:https://dubbo.apache.org/zh/docs/references/configuration/api/

posted on   格物致知_Tony  阅读(475)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
历史上的今天:
2020-01-14 Java 之 泛型的使用形式
点击右上角即可分享
微信分享提示

目录导航