集成前的准备
1、 阿里巴巴提供的dubbo集成springboot开源项目;
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.10confzoo_sample.cfg为zoo.cfg
编辑该配置文件内容
为
进入到zookeeper-3.4.10in目录,并且启动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); } }