赞
踩
本人遇到的问题是:生产者一次就注册上去了,但是到消费者这里一直注册不上去,调试了好长时间。
本人问题所在:问题本来挺简单的就是由于自己对@Reference与@Autowired和@Resource这三个注解不够理解造成项目可以跑起来但是就是注册不上去的原因
浅度解析:
@Autowired注解是根据类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。而且Autowired可以和Qualifier一起使用
例如:
@Configuration public class TestConfiguration { @Bean("testClass1") TestClass testClass1(){ return new TestClass("TestClass1"); } @Bean("testClass2") TestClass testClass2(){ return new TestClass("TestClass2"); } }
@RestController public class TestController { //此时这两个注解的连用就类似 @Resource(name="testClass1") @Autowired @Qualifier("testClass1") private TestClass testClass; @GetMapping("/test") public Object test(){ return testClassList; } }
@Resource注解与@Autowired注解类似区别是:
@Autowired先查找Type再Name ,@Resource先查找Name再Type(当指定@Resource name属性时,只会Name)
@Reference注解是用于dubbo消费者服务指明引用哪个提供者接口服务,在工程项目中会有很多模块,每个模块是一个服务,一个服务调用另一个服务都需要使用@Reference注解
例如:
@Service(interfaceClass = TestService.class) @Transactional public class TestServiceImpl implements TestService { void add(TestPojo test){ } }
@RestController @RequestMapping("test") public class TestController { @Reference private TestService TestService; }两个位置的代码属于两个服务。
总结:@Reference注入的是分布式中的远程服务的对象,@Resource和@Autowired注入的是本地spring容器中的对象。
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。