13第二章:(7)Dubbo 配置与SpringBoot整合

一、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<UserService> userServiceConfig(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/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值