Dubbo
(http://dubbo.io/) 是阿里的开源的一款分布式服务框架。而Spring Boot
则是Spring社区这两年致力于打造的简化Java配置的微服务框架。
利用他们各自优势,配置到一起,可以帮助我们构建出非常优秀的微服务。
配置Maven
使用的Dubbo的一般都是大型项目,maven项目构建也会使用parent节点,Spring Boot考虑到了这种情况,提供了dependencyManagement
的方式,引入Spring Boot的包。
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.3.5.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
在具体的starter选择上,使用spring-boot-starter
,这样spring-boot会只启动spring的配置,而不会自动启用什么软件或者是网络服务器。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>
Maven
的部分就配置完了
配置启动类
Dubbo提供了一个启动类com.alibaba.dubbo.container.Main
,在Dubbo的项目中,大多数都是使用这个类启动项目的,而这个类中会加载很多的容器,其中最重要的就是SpringContainer
,这个类会读取系统中相关的spring配置。
而在Spring Boot
的体系中,则是任意写一个启动类,然后加注解@SpringBootApplication
在这个类之上,让spring boot能够发现这个类,并启动这个类的main方法。
在Spring Boot
的设计中,推荐大家使用无XML配置的方式启动项目,但大多数项目由于各种原因很难摆脱XML的束缚,这种情况下,使用@ImportResource
注解引入xml配置,在@ImportResource
中填写需要引入的配置:
@ImportResource({"classpath:spring-context.xml"})
@ImportResource
会自动去查找resource目录下的文件并引入Spring Boot
。
经接着,我们需要解决启动类中main()
方法的问题,一般情况下,我们写的启动类会使用:
SpringApplication.run(DemoApplication.class, args);
但由于Dubbo项目引用了Spring Web
框架中的一些类,使得Maven也不得不导入Spring Web
项目,了而Spring Boot
发现跟web相关的框架就会去启动web容器(比如Tomcat
、Jetty
等),并且我们的配置是没有添加容器的,所以main()
方法需要写成:
ApplicationContext ctx = new SpringApplicationBuilder() .sources(DemoApplication.class) .web(false) // 没错,把项目设置成非web环境 .run(args);
还需要注意的是,由于使用了非常纯粹的starter,而且Dubbo的网络框架也是非阻塞的,所以我们还需使用一些方法,保持主线程的阻塞状态。比如我使用CountDownLatch
来做这件事。最终形成了以下启动类的完整代码:
@SpringBootApplication @ImportResource({"classpath:spring/spring-context.xml"}) public class DemoApplication { private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class); @Bean public CountDownLatch closeLatch() { return new CountDownLatch(1); } public static void main(String[] args) throws InterruptedException { ApplicationContext ctx = new SpringApplicationBuilder() .sources(DemoApplication.class) .web(false) .run(args); logger.info("项目启动!"); CountDownLatch closeLatch = ctx.getBean(CountDownLatch.class); closeLatch.await(); } }
好了这个类构建完成之后,我们按照Dubbo的方式配置好service,就可以打包了。
打包部署
Dubbo本身有一个比较麻烦的问题就是在打包部署,从官方的demo上来看,Dubbo打包借助了maven插件assembly
,而且要写不少的配置,而Spring Boot
的工具相对来说,几乎不需要任何的配置。在pom.xml
的build
节点下面,配置spring-boot-maven-plugin插件
<plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.3.5.RELEASE</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins>
命令行切换到项目的目录之后,执行命令:
mvn package
在target目录下面,会产生两个文件
把demo-0.0.1-SNAPSHOT.jar
拷贝到任意一个项目下启动:
服务调用
我简单地写了一个consumer
的测试类,从consumer
项目调用项目,也是可以顺利调用到这个服务的。
这个时候在provider
端,也是可以consumer
看到调用的情况 :
Bingo ! Dubbo running over the Spring Boot
相关推荐
标题 "springboot2.0.x+dubbo-spring-boot-starter" 涉及的是将流行的微服务框架 Dubbo 集成到 Spring Boot 2.0.x 的项目实践中。这个集成使得开发者能够利用 Spring Boot 的便利性和 Dubbo 的高性能远程服务调用...
### 使用Dubbo、Spring Boot等技术实现互联网后台服务项目架构 #### 一、引言 在当前快速发展的互联网行业中,微服务架构已经成为构建复杂系统的一种主流方式。微服务架构能够帮助开发团队更好地组织代码,提高...
《Spring Dubbo与Spring Boot整合应用详解》 在现代企业级开发中,Spring框架和其衍生的Spring Boot已经成为Java开发者的重要工具。同时,随着微服务架构的流行,Dubbo作为一款高效率的服务治理框架,也得到了广泛...
本压缩包文件"微服务架构面试题系列:Dubbo+Spring Boot+Spring Cloud.zip"包含了关于微服务领域的一系列面试题目,主要涉及了Dubbo、Spring Boot、Spring Cloud等关键技术和工具。接下来,我们将深入探讨这些技术...
这个压缩包文件"微服务架构面试专题系列:Dubbo+Spring Boot+Spring Cloud.rar"涵盖了三个关键的技术框架,它们是Dubbo、Spring Boot以及Spring Cloud。这些技术在Java面试中常常被提及,对于求职者来说,理解和掌握...
本项目是一个简单的Dubbo整合Spring Boot的示例,展示了如何通过Dubbo实现服务的注册与发现、服务的调用和监控等功能。通过本demo,读者可以了解到Dubbo服务框架与Spring Boot框架的集成方式,以及如何快速构建微...
这个面试专题系列涵盖了三个关键的技术框架:Dubbo、Spring Boot和Spring Cloud,这些都是构建微服务架构的核心组件。以下是对这些技术的详细解读: 1. **Dubbo**:由阿里巴巴开源的高性能Java RPC框架,它为服务...
Apache Dubbo Spring Boot项目 Spring Boot Project使使用Dubbo作为RPC框架轻松创建应用程序。 此外,它还提供: (例如,注释驱动,自动配置,外部化配置)。 (例如,安全性,运行状况检查,外部化配置)。 ...
《Dubbo-Spring-Boot-Starter 2.7.8:构建高效微服务架构的关键组件》 在现代Java开发领域,微服务架构已经成为构建大型、复杂应用的主流方式。其中,Dubbo作为阿里巴巴开源的高性能服务框架,为开发者提供了强大的...
《Dubbo Spring Boot Autoconfigure 2.7.8:深入解析与应用》 在Java开发领域,Dubbo作为一款高性能、轻量级的开源服务框架,早已被广大开发者所熟知。而Spring Boot作为Spring框架的简化版,通过自动配置极大地...
spring-boot-starter-dubbo是 dubbo 的 spring boot starter,它可以无缝地对接 spring boot和dubbo ,方便大家使用 dubbo 组件。 spring-boot-starter-dubbo 支持的 jdk 版本为 1.6 或者 1.6 。 spring-boot-...
在IT行业中,Spring Boot与Dubbo的整合是一个常见的任务,特别是在构建微服务架构时。Spring Boot以其简洁的配置和快速的开发能力深受开发者喜爱,而Dubbo作为一款高性能的Java RPC框架,能够帮助我们实现服务间的...
本面试专题系列主要涵盖了三个关键的技术组件:Dubbo、Spring Boot和Spring Cloud,它们在构建微服务架构中扮演着重要的角色。 首先,让我们深入了解一下Dubbo。Dubbo是阿里巴巴开源的一款高性能、轻量级的Java远程...
【标题】:“一个供学习的商城,以便整合Dubbo,Spring Boot” 【正文】: 本项目是一个基于Java技术栈的在线商城系统,旨在提供一个学习平台,帮助开发者掌握如何将Spring Boot与Dubbo服务治理框架整合应用。这个...
spring_dubbo spring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_...
【标题】"Dubbo Spring Boot 工程"指的是将分布式服务框架Dubbo与Spring Boot集成的应用工程示例。这个项目提供了使用Spring Boot构建基于Dubbo服务的起点,旨在帮助开发者快速理解和实践如何在Spring Boot环境下...
- **应用创建**:通过 `@SpringBootApplication` 注解启动 Spring Boot 应用,包含 `@SpringBootConfiguration`、`@EnableAutoConfiguration` 和 `@ComponentScan` 三个注解的功能。 2. **Dubbo**: - **服务治理...
在IT行业中,Zookeeper、Dubbo和Spring是三个非常重要的组件,它们在分布式系统和微服务架构中扮演着核心角色。下面将详细解释这三个技术及其相互间的整合。 **Zookeeper** 是一个分布式的,开放源码的分布式应用...
这个压缩包文件“一个供学习的商城,以便整合Dubbo,Spring Boot,MyBatis,Redis,MySQL,Kafka等分.zip”显然包含了构建一个完整电商系统所需要的关键技术组件。让我们详细探讨一下这些技术及其在实际应用中的作用...