前言:springboot+dubbo一个非常简单的例子
dubbo架构
安装zookeeper
此处略,见其他笔记
添加安全组规则
本人使用到了阿里云服务器,需要添加规则,当然也可以虚拟机
项目目录
- dubbo-interface:提供接口
- dubbo-provider:生产者
- dubbo-consumer:消费者
dubbo-interface
创建 Maven 项目
创建接口类
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
public interface HelloService {
public String helloWorld(String name); }
|
将项目打成 jar 包供其他项目使用
使用Maven install 下载到本地仓库
dubbo-provider
创建 springboot 项目
记得勾选web
maven依赖
加入 dubbo 、zookeeper以及接口的相关依赖 jar 包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <dependency> <groupId>com.husky</groupId> <artifactId>dubbo-interface</artifactId> <version>1.0-SNAPSHOT</version> </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>
|
配置
在 application.properties 配置文件中配置 dubbo 相关信息
1 2 3
| server.port=8333 spring.dubbo.application.name=dubbo-provider spring.dubbo.application.registry=zookeeper://服务器IP:2181
|
实现接口类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import com.alibaba.dubbo.config.annotation.Service; import org.springframework.stereotype.Component; import service.HelloService;
@Component @Service public class HelloServiceImpl implements HelloService { @Override public String helloWorld(String name) { return "Hello world " + name; } }
|
启动类
使用@EnableDubboConfiguration注解
1 2 3 4 5 6 7 8 9 10 11 12 13
| import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication @EnableDubboConfiguration public class DubboProviderApplication {
public static void main(String[] args) { SpringApplication.run(DubboProviderApplication.class, args); }
}
|
dubbo-consumer
创建 springboot 项目
同上
Maven依赖
同上
配置
在 application.properties 配置文件中配置 dubbo 相关信息,跟上文一样,只需要修改server.port
1 2 3
| server.port=8330 spring.dubbo.application.name=dubbo-provider spring.dubbo.application.registry=zookeeper://服务器IP:2181
|
调用接口类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import com.alibaba.dubbo.config.annotation.Reference; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import service.HelloService;
@RestController public class HelloController { @Reference private HelloService helloService;
@RequestMapping("/hello") public String hello() { System.out.println(helloService.helloWorld("husky")); return helloService.helloWorld("husky"); } }
|
SpringBoot启动类
使用@EnableDubboConfiguration注解
1 2 3 4 5 6 7 8 9
| @SpringBootApplication @EnableDubboConfiguration public class DubboConsumerApplication {
public static void main(String[] args) { SpringApplication.run(DubboConsumerApplication.class, args); }
}
|
测试
启动zookeeper和dubbo-provider、dubbo-consumer两个项目
访问浏览器http://localhost:8330/hello