使用Spring Boot 与Dubbo集成.这里使用的是XML而不是注解
代码地址:https://github.com/csy512889371/learndemo/tree/master/ctoedu-springboot-dubbo
ctoedu-springboot-dubbo-consumer 消费端
ctoedu-springboot-dubbo-provider 提供端
一、提供端
1、pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>cn.ctoedu</groupId>
    <artifactId>ctoedu-springboot-dubbo-provider</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
 
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.7.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
 
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>
 
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
 
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.8.4</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
 
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
 
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
 
    </dependencies>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
 
</project>
2、Application.java
package cn.ctoedu;
 
import org.apache.log4j.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ImportResource;
 
import java.util.concurrent.CountDownLatch;
 
@SpringBootApplication
@ImportResource({"classpath:dubbo-provider.xml"})
public class Application {
 
	private static final Logger logger = Logger.getLogger(Application.class);
 
	@Bean
	public CountDownLatch closeLatch() {
		return new CountDownLatch(1);
	}
 
	public static void main(String[] args) throws InterruptedException {
		ApplicationContext ctx = SpringApplication.run(Application.class, args);
//		logger.info("项目启动!");
//		CountDownLatch closeLatch = ctx.getBean(CountDownLatch.class);
//		closeLatch.await();
	}
 
}
3、ComputeService.java
package cn.ctoedu.service.impl;
 
import cn.ctoedu.service.ComputeService;
 
 
public class ComputeServiceImpl implements ComputeService {
 
    public Integer add(int a, int b) {
        return a + b;
    }
 
}
4、application.yml
server:
  port: 8010
#ZooKeeper
dubbo:
  registry:
    address: localhost:2181
logging:
  level:
    root: INFO
5、dubbo-provider.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
 
    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="compute-service"  />
 
    <!-- 注册中心服务地址 -->
    <dubbo:registry id="zookeeper" protocol="zookeeper" address="${dubbo.registry.address}" />
 
    <!-- 用dubbo协议在30001 -->
    <dubbo:protocol name="dubbo" port="30001" />
 
    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="cn.ctoedu.service.ComputeService" ref="computeService"
                   version="1.0" registry="zookeeper"/>
 
    <!-- 具体服务接口的实现 -->
    <bean id="computeService" class="cn.ctoedu.service.impl.ComputeServiceImpl" />
 
</beans>
二、消费端
1、application.java
package cn.ctoedu;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
 
@SpringBootApplication
@ImportResource({"classpath:dubbo-consumer.xml"})
public class Application {
 
	public static void main(String[] args) throws InterruptedException {
		SpringApplication.run(Application.class, args);
	}
 
}
2、pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>cn.ctoedu</groupId>
    <artifactId>ctoedu-springboot-dubbo-consumer</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
 
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
 
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>
 
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
 
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.8.4</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
 
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
 
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
 
    </dependencies>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
 
 
</project>
3、dubbo-consumer.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
 
    <!-- 消费方应用名 -->
    <dubbo:application name="consumer"  />
 
    <!-- 注册中心服务地址 -->
    <dubbo:registry id="zookeeper" protocol="zookeeper" address="${dubbo.registry.address}" />
 
    <!-- 引用ComputeService服务-->
    <dubbo:reference id="computeService" interface="cn.ctoedu.service.ComputeService"
                     check="false" version="1.0" url="" registry="zookeeper" protocol="dubbo" timeout="15000"/>
 
</beans>
4、ApplicationTests 测试类
package cn.ctoedu;
 
import cn.ctoedu.service.ComputeService;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
 
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public class ApplicationTests {
 
	@Autowired
	ComputeService computeService;
 
	@Test
	public void testAdd() throws Exception {
		System.out.println("cn.ctoedu: Dubbo消费结果为:。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。"+computeService.add(100, 200));
		Assert.assertEquals("compute-service:add", new Integer(3), computeService.add(1, 2));
		//Assert.assertEquals("compute-service:add", new Integer(5), computeService.add(1, 2));
	}
 
}
原文链接:https://blog.csdn.net/qq_27384769/article/details/79465781
原文:https://www.cnblogs.com/emmetyang/p/11418371.html