1.添加dubbo-spring-boot-starter 到你的Pom文件中。
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
2.如果项目获取jar包失败,则尝试添加一下仓库解决。
<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>
1.首先我们需要提供一个Dubbo RPC API 接口,Provider服务需要实现该接口并且导出,Consumer客户端需要调用该接口。
public interface DemoService {
String sayHello(String name);
}
1.服务提供者实现Interface接口,注意此处的@Service为com.alibaba.dubbo.config.annotation.Service
@Service(
version = "1.0.0",
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)";
}
}
2.定义入口Main
@SpringBootApplication
public class DubboProviderDemo {
public static void main(String[] args) {
SpringApplication.run(DubboProviderDemo.class,args);
}
}
3.配置application.properties
# Spring boot application
spring.application.name = dubbo-provider-demo
server.port = 9090
management.port = 9091
# 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
1.消费者服务请求DemoServiceBean接口,此处的@Reference为com.alibaba.dubbo.config.annotation.Reference
@RestController
public class DemoConsumerController {
@Reference(version = "1.0.0",
application = "${dubbo.application.id}",
url = "dubbo://localhost:12345")
private DemoService demoService;
@RequestMapping("/sayHello")
public String sayHello(@RequestParam String name) {
return demoService.sayHello(name);
}
}
2.定义消费者入口类
@SpringBootApplication(scanBasePackages = "com.alibaba.boot.dubbo.demo.consumer.controller")
public class DubboConsumerDemo {
public static void main(String[] args) {
SpringApplication.run(DubboConsumerDemo.class,args);
}
}
3.配置application.properties
# Spring boot application
spring.application.name = dubbo-consumer-demo
server.port = 8080
management.port = 8081
# 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
1、dubbo和springboot的结合非常简单,引入dubbo的starter即可。 2、application.properties配置清晰简单,各配置都非常完整。 3、本示例中用到的各种工具类可以忽略,我只是为了统一返回需要做的一个定义。
参考:https://gitee.com/march3/dubbo-spring-boot-project https://github.com/alibaba/dubbo-spring-boot-starter