集成前的准备
1、 阿里巴巴提供的dubbo集成springboot开源项目;
2、 https://github.com/alibaba
3、 我们将采用该项目提供的jar包进行集成;
<!--添加dubbo集成springboot依赖-->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
dubbo开发一般建议采用三个项目:
开发Dubbo服务接口项目
开发Dubbo服务提供者项目
开发Dubbo服务消费者项目
开发Dubbo服务接口项目【普通maven项目即可】
按照Dubbo官方开发建议,创建一个接口项目,该项目只定义接口和model类
定义接口类
package com.joinlabs.dubbo.service;
import com.joinlabs.dubbo.model.User;
/**
* Created by Administrator on 2018/10/26/026.
*/
public interface UserService {
public User findById(int id);
public String findUserName(int id);
}
定义model类
package com.joinlabs.dubbo.model;
/**
* Created by Administrator on
2018/10/26/026.
*/public class User {
private int id;
private String name;
public User() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
对接口项目进行打包,利用maven工具进行打包
打包成功后会将该jar包以maven的形式保存到maven的本地仓库中,方便服务提供者和消费者项目项目在pom.xml中进行引用
开发Dubbo服务提供者【springboot项目】
1、 创建一个Springboot项目并配置好相关的依赖;
2、 加入springboot与dubbo集成的起步依赖:
<!--添加dubbo集成springboot依赖-->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
3、 在Springboot的核心配置文件application.properties中配置dubbo的信息:
#内置的Tomcat服务器启动后的端口
server.port=8080
#Dubbo配置
spring.dubbo.appname=springboot-dubbo-provider
spring.dubbo.registry=zookeeper://localhost:2181
由于使用了zookeeper作为注册中心,则需要加入zookeeper的客户端jar包:
<!-- zookeeper客户端依赖start -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- zookeeper客户端依赖end -->
4、 编写Dubbo的接口实现类,去试下上面的接口项目中的service接口:
想要在pom.xml中引入接口jar包的依赖
<dependency>
<groupId>com.joinlabs.dubbo</groupId>
<artifactId>01springboot-dubbo-interface</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
实现类:
package com.joinlabs.dubbo.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.joinlabs.dubbo.model.User;
import com.joinlabs.dubbo.service.UserService;
import org.springframework.stereotype.Component;
/**
* Created by Administrator on 2018/10/26/026.
*/
@Service(interfaceClass = UserService.class) //该注解是dubbo的,等价于之前的<dubbo:service interface="" ></dubbo:service>
@Component //该注解是spring的,或者使用@org.springframework.stereotype.Service
public class UserServiceImpl implements UserService {
@Override
public User findById(int id) {
User user = new User();//模拟数据,也可以集成mybatis到数据库查询数据
user.setId(id);
user.setName("name"+id);
return user;
}
@Override
public String findUserName(int id) {
return "name"+id;
}
}
5、编写一个入口main程序启动Dubbo服务提供者:
package com.joinlabs.dubbo;
import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubboConfiguration //开启dubbo配置支持
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
安装和启动zookeeper
下载安装包
解压缩到c盘根目录
修改配置文件名称zookeeper-3.4.10\conf\zoo_sample.cfg为zoo.cfg
编辑该配置文件内容
为
进入到zookeeper-3.4.10\bin目录,并且启动zkServer.cmd,不要关闭控制台窗口
可以通过jsp命令查看进程
通过自带的客户端去连接
打开一个新的控制台,执行命令zkCli.cmd
开发Dubbo服务消费者【springboot项目】
1、创建一个Springboot项目并配置好相关的依赖;
2、加入springboot与dubbo集成的起步依赖:
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>
3、在Springboot的核心配置文件application.properties中配置dubbo的信息:
# WEB服务端口
server.port=9090
# dubbo配置
spring.dubbo.appname=springboot-dubbo-consumer
spring.dubbo.registry=zookeeper://192.168.91.129:2181
由于使用了zookeeper作为注册中心,则需要加入zookeeper的客户端jar包:
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
4、编写一个Controller类,调用远程的Dubbo服务:
@Controller
public class UserController {
@Reference //使用dubbo的注解引用远程的dubbo服务
private UserService userService;
@RequestMapping("/sayHi")
public @ResponseBody String sayHi () {
return userService.sayHi("spring boot dubbo......");
}
}
5、编写一个入口main程序启动Dubbo服务提供者:
@SpringBootApplication
@EnableDubboConfiguration //开启dubbo配置支持
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
}