打算自己做一些事情,需要实现分布式的系统,朋友的推荐下试用了一下dubbo,感觉能满足自己的要求。于是开始学习,这个文章作为记录。
dubbo官方的实例和网络上的例子,大多都是使用API启动。而根据我个人的使用需要,要搭建一个Spring+SpringMVC+dubbo的开发环境,并要使用spring自动加载。话不多说进入正题:
1,首先创建 提供者provider 和 消费者consumer 两个工程(分别是dp、dc)。
使用Eclipse创建Maven工程。
dp 的pom文件如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xuyang</groupId>
<artifactId>dp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>dp Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 设置 Spring 的版本 -->
<org.springframework.version>3.1.4.RELEASE</org.springframework.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- dubbo start-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.3.6</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<!-- dubbo end-->
</dependencies>
<build>
<finalName>dp</finalName>
</build>
<packaging>war</packaging>
</project>
问题:
由于当前使用的spring版本是3.1,而dubbo使用的是spring是2.x;所以需要处理spring包冲突。方法如下:
找到dubbo依赖的spring2.5.6,右击使用maven--> Exclude Maven Artifact
效果参见 pom.xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
查看工程中的 maven包引用:
已经没有spring2.5.6了。