代码地址 :https://github.com/xingxingtx/SpringBoot.git
gitclone:[email protected]:xingxingtx/SpringBoot.git
代码大致结构如下图:
创建工程名为:
- springboot-dubbo-provide 工程用于提供服务。
- springboot-dubbo-api 工程主要是放一些service接口,用于提供给消费者使用 。
- springboot-dubbo-consume 工程为消费者。
dubbo-admin 安装
参考地址 可以自己百度怎么安装 这里分享一个war包:百度网盘地址 密码:dvq4
工程创建
注意在启动类上添加
@EnableDubboConfig 注解
springboot-dubbo-provide
pom.xml 与
springboot-dubbo-consume 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>Springboot-Dubbo-Provide</groupId>
<artifactId>springboot-dubbo-provide</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot-dubbo-provide</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>SpringBoot</groupId>
<artifactId>springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<com.alibaba.dubbo.version>2.6.2</com.alibaba.dubbo.version>
<org.apache.zookeeper.version>3.4.13</org.apache.zookeeper.version>
<com.github.sgroschupf.zkclient.version>0.1</com.github.sgroschupf.zkclient.version>
<curator.version>2.8.0</curator.version>
</properties>
<dependencies>
<!-- dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
<version>${com.alibaba.dubbo.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${org.apache.zookeeper.version}</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>${com.github.sgroschupf.zkclient.version}</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>${curator.version}</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>${curator.version}</version>
</dependency>
<dependency>
<groupId>Springboot-Dubbo-Api</groupId>
<artifactId>springboot-dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
dubbo-provider.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>Springboot-Dubbo-Provide</groupId>
<artifactId>springboot-dubbo-provide</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot-dubbo-provide</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>SpringBoot</groupId>
<artifactId>springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<com.alibaba.dubbo.version>2.6.2</com.alibaba.dubbo.version>
<org.apache.zookeeper.version>3.4.13</org.apache.zookeeper.version>
<com.github.sgroschupf.zkclient.version>0.1</com.github.sgroschupf.zkclient.version>
<curator.version>2.8.0</curator.version>
</properties>
<dependencies>
<!-- dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
<version>${com.alibaba.dubbo.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${org.apache.zookeeper.version}</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>${com.github.sgroschupf.zkclient.version}</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>${curator.version}</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>${curator.version}</version>
</dependency>
<dependency>
<groupId>Springboot-Dubbo-Api</groupId>
<artifactId>springboot-dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
ProvideConfig配置
package com.provide.config;
import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
/**
* Created by Administrator on 2018/11/7.
*/
@Configuration
@ImportResource({ "classpath:dubbo/*.xml" })
public class ProvideConfig {
}
UserServiceImpl:
Service是dubbo的注解别引错
package com.provide.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.api.model.user.UserModel;
import com.api.service.UserService;
import org.springframework.stereotype.Component;
/**
* Created by Administrator on 2018/11/7.
*/
@Service(version = "1.0")
@Component
public class UserServiceImpl implements UserService {
@Override
public void insertUser(UserModel model) {
//相关处理
}
}
springboot-dubbo-consume
pom.xml 与springboot-dubbo-provide一样
dubbo-consume.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="example-consume" />
<!-- 注册中心暴露服务地址 -->
<dubbo:registry id="zookeeper" protocol="zookeeper" address="localhost:2181" />
<!-- 使用注解方式-->
<dubbo:annotation package="com.consume"/>
<!--引用服务配置,用于创建一个远程服务代理,一个引用可以指向多个注册中心。 引用com.api.service.UserService服务-->
<dubbo:reference id="userService" interface="com.api.service.UserService"
check="false" version="1.0" registry="zookeeper" protocol="dubbo" timeout="15000"/>
</beans>
Controller调用:
package com.consume.controller.order;
import com.api.model.user.UserModel;
import com.consume.service.OrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* Created by Administrator on 2018/11/7.
*/
@RestController
@Api("用户模块")
public class OrderController {
@Autowired
OrderService orderService;
@RequestMapping(value = "/api/user",method = RequestMethod.GET)
@ApiOperation(value = "用户模块新增", httpMethod = "GET", response = String.class, notes = "用户模块新增,提供用户管理-用户模块新增操作")
public String insertUser(){
UserModel model = new UserModel();
model.setUserName("haha123");
model.setAddress("怀化");
orderService.insertUser(model);
return model.toString();
}
}
service:
@Reference dubbo注解 属于直连的方式
package com.consume.service.impl;
import com.alibaba.dubbo.config.annotation.Reference;
import com.api.model.user.UserModel;
import com.api.service.UserService;
import com.consume.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* Created by Administrator on 2018/11/9.
*/
@Service
public class OrderServiceImpl implements OrderService{
@Reference(version = "1.0")
UserService userService;
@Override
public void insertUser(UserModel model) {
userService.insertUser(model);
}
}
springboot-dubbo-api 比较简单 代码就不贴出 截图如下,实体类一定要实现Serializable接口
启动:
首先下载对应项目版本的zookeeper 此项目为3.4.13 zookeeper安装请自行百度
这里分享一个3.4.13版本的zookeeper 百度网盘地址 密码:t5yu
1.启动zookeeper服务
2.启动dubbo-admin
3.启动springboot-dubbo-consume
4.启动springboot-dubbo-provide
5.打开地址http://localhost:8080/dubbo-admin-2.5.6/ 如下图表示基础框架搭建已经完成。
提供者界面:
消费者界面: