当前位置:   article > 正文

dubbo 消费者注册zookeeper失败问题记录_dubbo客户端无法注册zk

dubbo客户端无法注册zk

本人遇到的问题是:生产者一次就注册上去了,但是到消费者这里一直注册不上去,调试了好长时间。

本人问题所在:问题本来挺简单的就是由于自己对@Reference与@Autowired和@Resource这三个注解不够理解造成项目可以跑起来但是就是注册不上去的原因

浅度解析:

@Autowired注解是根据类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。而且Autowired可以和Qualifier一起使用

例如:

  1. @Configuration
  2. public class TestConfiguration {
  3. @Bean("testClass1")
  4. TestClass testClass1(){
  5. return new TestClass("TestClass1");
  6. }
  7. @Bean("testClass2")
  8. TestClass testClass2(){
  9. return new TestClass("TestClass2");
  10. }
  11. }
  1. @RestController
  2. public class TestController {
  3. //此时这两个注解的连用就类似 @Resource(name="testClass1")
  4. @Autowired
  5. @Qualifier("testClass1")
  6. private TestClass testClass;
  7. @GetMapping("/test")
  8. public Object test(){
  9. return testClassList;
  10. }
  11. }

@Resource注解与@Autowired注解类似区别是:

@Autowired先查找Type再Name ,@Resource先查找Name再Type(当指定@Resource name属性时,只会Name)

@Reference注解是用于dubbo消费者服务指明引用哪个提供者接口服务,在工程项目中会有很多模块,每个模块是一个服务,一个服务调用另一个服务都需要使用@Reference注解

例如:

  1. @Service(interfaceClass = TestService.class)
  2. @Transactional
  3. public class TestServiceImpl implements TestService {
  4. void add(TestPojo test){
  5. }
  6. }
  1. @RestController
  2. @RequestMapping("test")
  3. public class TestController {
  4. @Reference
  5. private TestService TestService;
  6. }

两个位置的代码属于两个服务。

总结:@Reference注入的是分布式中的远程服务的对象,@Resource和@Autowired注入的是本地spring容器中的对象

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号