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注解配置