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注解的作用