软件版本:
Springboot2.0
Dubbo2.6
zookeeper3.4.6
废话少说,正式开始。
Step1:创建项目:使用maven新建一个DubboExample的pom工程,然后在这个parent项目下面创建三个module项目,一个DubboProvider,一个DubboConsumer,一个DubboCommon。
上图:创建DubboExample父项目
上图:创建好后的项目。
右键点击DubboExample项目,创建maven的module项目
重复上面的动作创建DubboConsumer,创建好后如下图:
Step2:DubboExample工程的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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
</parent>
<groupId>com.example</groupId>
<artifactId>DubboExample</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<name>DubboExample</name>
<description>DubboExample</description>
<modules>
<module>DubboProvider</module>
<module>DubboConsumer</module>
<module>DubboCommon</module>
</modules>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
</dependencies>
</project>
Step3:DubboProvider和DubboConsumer工程的pom分别添加如下内容(依赖DubboCommon工程)。
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>DubboCommon</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
Step4:DubboCommon工程添加Service接口如下:
DemoService接口
DemoService.java
package com.example.service;
public interface DemoService {
public String getDemoString();
}
Step5:我们看看服务的提供者DubboProvider
ApplicationProvider.java
package com.example.provider.service;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
@SpringBootApplication
@ComponentScan("com.example")
@EnableDubboConfiguration
public class ApplicationProvider {
public static void main(String[] args) {
SpringApplication.run(ApplicationProvider.class, args);
}
}
DemoServiceImpl.java
package com.example.provider.service;
import org.springframework.stereotype.Component;
import com.alibaba.dubbo.config.annotation.Service;
import com.example.service.DemoService;
@Service
@Component //这个必须要加
public class DemoServiceImpl implements DemoService {
@Override
public String getDemoString() {
return "Hello Dubbo!";
}
}
application.properties
server.port=9092
spring.dubbo.scan.basePackages = com.example.provider.service
spring.dubbo.application.id = dubbo-dustin-demo
spring.dubbo.application.name = dubbo-dustin-demo
spring.dubbo.protocol.id = dubbo
spring.dubbo.protocol.name = dubbo
spring.dubbo.protocol.port = 12345
spring.dubbo.registry.id = my-registry
spring.dubbo.registry.address = zookeeper://127.0.0.1:2181
Step6:我们看看服务的提供者DubboConsumer
DemoController.java
package com.example.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.service.DemoService;
@RestController
@RequestMapping("demo")
public class DemoController {
@Autowired
private DemoService demoService;
@RequestMapping("index")
public String index(){
return demoService.getDemoString();
}
}
ApplicationConsumer.java
package com.example.system;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubboConfig;
@SpringBootApplication
@EnableDubboConfig
@ComponentScan("com.example")
@ImportResource(locations= {"classpath:spring-dubbo.xml"}) //加载dubbo配置文件
public class ApplicationConsumer {
public static void main(String[] args) {
SpringApplication.run(ApplicationConsumer.class, args);
}
}
application.properties
server.port=9093
spring-dubbo.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 id="dubbo-consumer-demo" name="dubbo-consumer-demo"/>
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<dubbo:protocol id="dubbo" name="dubbo" port="12345"/>
<dubbo:reference id="demoService" interface="com.example.service.DemoService" />
</beans>
Step7:启动zookeeper
安装启动参考文章 zookeeper安装和使用(Windows环境)
Step8:启动DubboProvider
Step8:启动DubboConsumer
Step8:测试
浏览器输入localhost:9093/demo/index
完成,其实整合并不难,细心按照步骤来一遍就好了。