相关链接:
git文档:https://github.com/apache/incubator-dubbo-spring-boot-project/blob/master/README_CN.md
官方文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
外部化配置:https://github.com/mercyblitz/blogs/blob/master/java/dubbo/Dubbo-Externalized-Configuration.md
已发行版本
您可以为您的工程引入最新 dubbo-spring-boot-starter
的发布,增加以下依赖到工程的 pom.xml
文件中:
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
如果您的工程遇到了依赖问题, 请尝试添加如下 Maven 参考到工程的 pom.xml
文件中:
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
开发版本
从现在开始, dubbo-spring-boot-project
将在每个发布中发行两个版本 :
源代码构建
如果你需要尝试最新 dubbo-spring-boot-project
的特性,您可将当前工程手动 Maven install 到本地 Maven 仓库:
- Maven install 当前工程
Maven install =
mvn install
依赖关系
版本 | Java | Spring Boot | Dubbo |
---|---|---|---|
0.2.0 | 1.8+ | 2.0.x | 2.6.2 + |
0.1.1 | 1.7+ | 1.5.x | 2.6.2 + |
快速开始
如果您对 Dubbo 不是非常了解,耽误您几分钟访问 http://dubbo.apache.org/ 。了解后,如果你期望更深入的探讨,可以移步用户手册。
通常情况 , Dubbo 应用有两种使用场景 , 其一为 Dubbo 服务提供方 , 另外一个是 Dubbo 服务消费方,当然也允许两者混合,下面我们一起快速开始!
首先,我们假设存在一个 Dubbo RPC API ,由服务提供方为服务消费方暴露接口 :
public interface DemoService {
String sayHello(String name);
}
实现 Dubbo 服务提供方
- 实现
DemoService
接口
@Service(
version = "${demo.service.version}",
application = "${dubbo.application.id}",
protocol = "${dubbo.protocol.id}",
registry = "${dubbo.registry.id}"
)
public class DefaultDemoService implements DemoService {
public String sayHello(String name) {
return "Hello, " + name + " (from Spring Boot)";
}
}
- 编写 Spring Boot 引导程序
@SpringBootApplication
public class DubboProviderDemo {
public static void main(String[] args) {
new SpringApplicationBuilder(DubboProviderDemo.class)
.web(false) // 非 Web 应用
.run(args);
}
}
- 配置
application.properties
:
# Spring boot application
spring.application.name = dubbo-provider-demo
server.port = 9090
management.port = 9091
# Service version
demo.service.version = 1.0.0
# Base packages to scan Dubbo Components (e.g @Service , @Reference)
dubbo.scan.basePackages = com.alibaba.boot.dubbo.demo.provider.service
# Dubbo Config properties
## ApplicationConfig Bean
dubbo.application.id = dubbo-provider-demo
dubbo.application.name = dubbo-provider-demo
## ProtocolConfig Bean
dubbo.protocol.id = dubbo
dubbo.protocol.name = dubbo
dubbo.protocol.port = 12345
## RegistryConfig Bean
dubbo.registry.id = my-registry
dubbo.registry.address = N/A
更多的实现细节 , 请参考 Dubbo 服务提供方示例.
实现 Dubbo 服务消费方
- 通过
@Reference
注入DemoService
:
@RestController
public class DemoConsumerController {
@Reference(version = "${demo.service.version}",
application = "${dubbo.application.id}",
url = "dubbo://localhost:12345")
private DemoService demoService;
@RequestMapping("/sayHello")
public String sayHello(@RequestParam String name) {
return demoService.sayHello(name);
}
}
- 编写 Spring Boot 引导程序(Web 应用) :
@SpringBootApplication(scanBasePackages = "com.alibaba.boot.dubbo.demo.consumer.controller")
public class DubboConsumerDemo {
public static void main(String[] args) {
SpringApplication.run(DubboConsumerDemo.class,args);
}
}
- 配置
application.properties
:
# Spring boot application
spring.application.name = dubbo-consumer-demo
server.port = 8080
management.port = 8081
# Service Version
demo.service.version = 1.0.0
# Dubbo Config properties
## ApplicationConfig Bean
dubbo.application.id = dubbo-consumer-demo
dubbo.application.name = dubbo-consumer-demo
## ProtocolConfig Bean
dubbo.protocol.id = dubbo
dubbo.protocol.name = dubbo
dubbo.protocol.port = 12345
请确保 Dubbo 服务提供方服务可用, DubboProviderDemo
运行方可正常。