SpringBoot与Dubbo的整合pom依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.esint</groupId>
<artifactId>dubbo-01-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
</dependencies>
通常Service服务加上@DubboService注解后,才能被Dubbo识别并且实例化并且发布为RPC服务。Dubbo如何去扫描这些加了注解的类,有三种途径:
- 1.在服务启动类上加上注解 @EnableDubbo 。作用范围:当前同级的包及其子类会被扫描识别。
- 2.在服务启动类上加上注解 @DubboComponentScan( basePackages = “com.esint.service”) 这个指定的包下的带有@DubboService的注解类会被扫描识别。
- 3.在yml配置文件中设置。
dubbo:
scan:
base-packages: com.esint.service
@DubboService作用:
- SpringBoot会创建这个类型的对象(等同于@Component(@Service) @Bean注解的创建对象的作用)
- 发布成RPC的服务。
@DubboService
等同:<bean id="userService" class="com.esint.service.UserServiceImpl" />
<dubbo:service interface="com.esint.service.UserService" ref="userService" />
代码兼容性建议:服务类不仅仅要加入@DubboService
注解,同时也要设置@Service
注解。
@DubboReference(url = “dubbo://169.254.55.31:20880/com.esint.service.UserService”)
- 在Consumer端,通过@DubboReference 注入远端服务的代理对象。
- 类似于Spring开发中的@Autowired注解的作用