1)spring boot在自己的配置文件application.properties
配置dubbo。(本篇主要说这个)
2)spring boot结合传统spring dubbo配置文件xml形式。(请看下一篇文章)
<!-- Spring Boot Dubbo 依赖-->
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
application.properties
文件里配置如下内容:#dubbo提供者的别名,只是个标识
spring.dubbo.application.name=provider(一般写自己的项目名称)
#zk地址
spring.dubbo.registry.address=zookeeper://192.168.1.160:2181
#dubbo协议
spring.dubbo.protocol.name=dubbo
#duboo端口号
spring.dubbo.protocol.port=20880
#这是你要发布到dubbo的接口所在包位置
spring.dubbo.scan=test.spring.dubboService
package test.spring.dubboService;
public interface TestDubboService {
public String getName(String name);
}
package test.spring.dubboService.impl;
import com.alibaba.dubbo.config.annotation.Service;
import test.spring.dubboService.TestDubboService;
@Service
public class TestDubboServiceImpl implements TestDubboService {
@Override
public String getName(String name) {
// TODO Auto-generated method stub
return "姓名:"+name;
}
}
@Service
注意该注解是com.alibaba.dubbo.config.annotation.Service
如果引入错误,发布也不会成功的。@Service(version="1.0.0.1")
<!-- Spring Boot Dubbo 依赖-->
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
application.properties
文件里填些dubbo的配置:spring.dubbo.application.name=consumer-1(一般写自己的项目名称)
#zk地址
spring.dubbo.registry.address=zookeeper://192.168.1.160:2181
#dubbo协议
spring.dubbo.protocol.name=dubbo
#duboo端口号
spring.dubbo.protocol.port=20880
#这是要扫描使用的dubbo接口所在包位置
spring.dubbo.scan=test.spring.dubboService
test.spring.dubboService
包里,已发布接口TestDubboService
也需要复制一份到消费者这边,并且包结构都必须与发布的一样。??注意上边,这里我说的复制,具体在项目开发里不会这么干的,比如我们是这样来做的。
??我们是项目里建了三个项目(springboot-facade、springboot-rest、springboot-service),springboot-facade里放了接口的结构,即service和bean,springboot-rest项目和springboot-service项目分别引用springboot-facade项目,将来就算别人来调用我们的接口,只要引入一下springboot-facade包,配置一下dubbo,就可以了。
当然就算webservice那种远程调用,也是需要通过wsdl去生成service结构在消费者这边。
关于单项目需要拷贝的话,具体请看下图,主要是提示一下,复制的接口在项目所处的路径必须要与发布的路径相同:
TestController
引入的接口,在引入的地方需要加一个注解,该注解为alibaba的 @Reference
,同理如果想加入版本号,则加上version即可,值要与发布接口的版本号对应。例如:@Reference(version="1.0.0.1")
,具体如下:package test.spring.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.dubbo.config.annotation.Reference;
import test.spring.dubboService.TestDubboService;
@RestController
@RequestMapping("/springboot")
public class TestController {
@Reference
TestDubboService testDubboService;
@RequestMapping(value="abc/akf",method=RequestMethod.GET)
public String abc(String name){
return testDubboService.getName(name);
}
}
@Lazy
延迟加载注解也调用不到,我反正都是调整包结构解决的空指针异常。版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_43842093/article/details/121527813
内容来源于网络,如有侵权,请联系作者删除!
application.properties
文件里配置如下内容:@Service
注意该注解是com.alibaba.dubbo.config.annotation.Service
如果引入错误,发布也不会成功的。@Service(version="1.0.0.1")
application.properties
文件里填些dubbo的配置:test.spring.dubboService
包里,已发布接口TestDubboService
也需要复制一份到消费者这边,并且包结构都必须与发布的一样。TestController
引入的接口,在引入的地方需要加一个注解,该注解为alibaba的 @Reference
,同理如果想加入版本号,则加上version即可,值要与发布接口的版本号对应。例如:@Reference(version="1.0.0.1")
,具体如下:@Lazy
延迟加载注解也调用不到,我反正都是调整包结构解决的空指针异常。