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配置文件中的<dubbo:method />标签可以实现该功能

这就要求我们引入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 { //<dubbo:application name="boot-user-service-provider"></dubbo:application>
@Bean
public ApplicationConfig applicationConfig() {
ApplicationConfig applicationConfig = new ApplicationConfig();
applicationConfig.setName("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:service interface="com.zang.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); return serviceConfig;
} }
使用@DubboComponentScan注解指定dubbo扫描路径。

SpringBoot与Dubbo整合的三种方式的更多相关文章
- springboot+mybatis实现数据分页(三种方式)
项目准备 1.创建用户表 2.使用spring初始化向导快速创建项目,勾选mybatis,web,jdbc,driver 添加lombok插件 <?xml version="1.0&q ...
- IntelliJ IDEA 2017版 spring-boot 拦截器的操作三种方式
一.注解方式 @WebServlet(urlPatterns = "/myServlet") public class MyServlet extends HttpServlet ...
- dubbo异步调用三种方式
异步通讯对于服务端响应时间较长的方法是必须的,能够有效地利用客户端的资源,在dubbo中,消费端<dubbp:method>通过 async="true"标识. < ...
- Springboot设置跨域的三种方式
方式一(精细配置) 在需要跨域的整个Controller或者单个方法上添加@CrossOrigin注解 方式二(全局配置) @Configuration public class WebMvcConf ...
- springboot与dubbo整合入门(三种方式)
Springboot与Dubbo整合三种方式详解 整合环境: jdk:8.0 dubbo:2.6.2 springboot:2.1.5 项目结构: 1.搭建项目环境: (1)创建父项目与三个子项目,创 ...
- dubbo服务运行的三种方式
dubbo服务运行,也就是让生产服务的进程一直启动.如果生产者进程挂掉,也就不存在生产者,消费者不能进行消费. Dubbo服务运行的三种方式如下:1.使用Servlet容器运行(Tomcat.Jett ...
- SpringBoot 三种方式配置 Druid(包括纯配置文件配置)
记录一下在项目中用纯 YML(application.yml 或者 application.properties)文件.Java 代码配置 Bean 和注解三种方式配置 Alibaba Druid 用 ...
- 解决dubbo注册zookepper服务IP乱入问题的三种方式
最近做一个项目引入了dubbo+zookepper的分布式服务治理框架.在应用的发布的时候出现一个怪问题.zookepper服务是起在开发服务器192.168.23.180上.本机起应用服务提供者注册 ...
- 【dubbo】服务提供者运行的三种方式
[dubbo]服务提供者运行的三种方式 学习了:https://blog.csdn.net/yxwb1253587469/article/details/78712451 1,使用容器: 2,使用自建 ...
随机推荐
- IIS6 Gzip 网页GZIP压缩(转)
现在主流浏览器基本都支持 Gzip 压缩,因此这也成了 WebServer 优化策略的一种常规手段.启用压缩后能有效减少网页传输数据大小,使得有限带宽能提供更多的请求,并在一定程度上提高了网页 &qu ...
- windows取证
工具网站 : http://www.ntsecurity.nu/toolbox/ 命令行历史 :命令行模式 CMD 中使 doskey /history 命令可以显示前面输入的命令情况(例如使用 cl ...
- a标签置灰不可点击
a标签的title属性可以实现鼠标放上去显示信息的功能 <a title="编辑" href ="javascript:return false;" on ...
- Medline Plus
提问地址: http://apps2.nlm.nih.gov/medlineplus/contact/index.cfm?lang=en&from=http://www.nlm.nih.gov ...
- oauth2-server-php-docs 存储 学说2
学说2 创建客户端和访问令牌存储 要把学说融入到你的项目中,首先要建立你的实体.我们先从客户端,用户和访问令牌模型开始: yaml YourNamespace\Entity\OAuthClient: ...
- [Spring Boot] Introduce to Mockito
We have the implemetion: @SpringBootApplication public class MockitoDemoApplication { public static ...
- linux 常用命令--------雪松整理
linux 常用命令--------雪松整理 博客: http://hi.baidu.com/quanzhou722/blog错误在所难免,还望指正!========================= ...
- asp.net集合类
1.返回IEnumerable类型 protected void Page_Load(object sender, EventArgs e) { IEnumerable ie = AllGet(); ...
- 微信小程序 - 组件传值给调用页面
演示如下(可以ctrl+鼠标放大或者下载GIF图片) 1. 先组件定义事件“checkbox”(组件内事件) 2. 调用页面调用它需要加bind:事件名 = 调用页面事件名(bind即绑定调用组件“o ...
- CentOS下Crontab安装使用详细说明(转)
来自:http://www.centoscn.com/CentOS/help/2014/1220/4346.html crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的 ...