# spring-boot-starter-dubbo
**Repository Path**: code_lgh/spring-boot-starter-dubbo
## Basic Information
- **Project Name**: spring-boot-starter-dubbo
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2017-02-03
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#spring-boot-start-dubbo
Dubbo是阿里开发的一套分布式通讯框架,Spring-boot是业界比较火的微服务框架,两者可以进行结合实现分布式微服务
* 对于提供外部的服务,可以使用spring-boot的rest服务,可以结合增强的dubbox,支持只注册dubbo服务,但不发布服务.
同时也支持消费springboot对外提供的rest服务.git地址: https://git.oschina.net/wuyu15255872976/dubbox.git
* 对于内部远程Rpc调用,可以借用Dubbo能力,达到服务治理的目的
##如何发布Dubbo服务
* 在Spring Boot项目的pom.xml中添加以下依赖:
```
org.springframework.boot
spring-boot-starter-dubbo
1.3.6.SNAPSHOT
org.springframework.boot
spring-boot-starter-web
1.3.6.RELEASE
```
* 在application.properties添加Dubbo的版本信息和客户端超时信息,如下:
```
#dubbo produce
spring.dubbo.application.name=comment-provider
spring.dubbo.registry.protocol=zookeeper
spring.dubbo.registry.address=monkey:2181,127.0.0.1:2181
spring.dubbo.protocol.name=duubo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=com.vcg.comment.service
spring.dubbo.protocol.host=发布的hostname
在Spring Application的application.properties中添加spring.dubbo.scan即可支持Dubbo服务发布,其中scan表示要扫描的package目录
```
* spring boot启动
```
@SpringBootApplication
@EnableDubboAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
```
* 编写你的Dubbo服务,只需要添加要发布的服务实现上添加 @Service ,如下:
```
@Service(version = "1.0.0")
public class CommentServiceImpl implements CommentService {
@Override
public String test() {
return "hello";
}
}
如果你不喜欢Dubbo的@Service注解,而是喜欢原生的Spring @Service注解,可以采用以下方式对外发布服务
@Configurable
public class BeanConfiguration {
MonitorConfig monitorConfig;
@Autowire
public void setMonitorConfig(MonitorConfig monitorConfig){
this.monitorConfig=monitorConfig;
}
@Bean
public ServiceBean commentServiceServiceBean(CommentService commentService) {
ServiceBean serviceBean = new ServiceBean<>();
serviceBean.setInterface(CommentService.class);
//开启监控
serviceBean.setMonitor(monitorConfig);
serviceBean.setRef(commentService);
return serviceBean;
}
}
```
##如何引用Dubbo服务
* 在Spring Boot项目的pom.xml中添加以下依赖:
org.springframework.boot
spring-boot-starter-dubbo
1.3.6.SNAPSHOT
* 在application.properties添加Dubbo的版本信息和客户端超时信息,如下:
```
#dubbo consumer
spring.dubbo.application.name=comment-consumer
spring.dubbo.registry.protocol=zookeeper
spring.dubbo.registry.address=monkey:2181,127.0.0.1:2181
spring.dubbo.scan=com.vcg
在Spring Application的application.properties中添加spring.dubbo.scan即可支持Dubbo服务发布,其中scan表示要扫描的package目录
```
* spring boot启动
```
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
* 引用Dubbo服务,只需要添加要发布的服务实现上添加 @Reference ,如下:
```
@Component
public class UserController {
@Reference(version = "1.0.0")
private CommentService commentService;
}
```
* 如果你不喜欢@Reference注入服务,而是用@Autowired可以采用以下方式.
```
@Configurable
public class BeanConfiguration {
MonitorConfig monitorConfig;
@Autowire
public void setMonitorConfig(MonitorConfig monitorConfig){
this.monitorConfig=monitorConfig;
}
@Bean
public ReferenceBean commentService(){
ReferenceBean commentServiceBean=new ReferenceBean<>();
commentServiceBean.setInterface(CommentService.class);
commentServiceBean.setMonitor(monitorConfig);
return commentServiceBean;
}
}
```
* 引用Dubbo服务,引用以上服务:
```
@Component
public class UserController {
@Autowired
private CommentService commentService;
}
```