前提:在各个模块引入dubbo依赖,或者只在公共模块引入也行
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
</dependency>
dubbo配置文件示例
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<description>dubbo服务接口定义</description>
<dubbo:application name="${application.name}" owner="${application.owner}" />
<dubbo:registry protocol="zookeeper" address="${registry.address}"/>
<dubbo:annotation package="xxx.viservice" />
<dubbo:consumer check="false" />
</beans>
application.name=weipu-web-legou-consumer
application.owner=
#\u5e94\u7528\u6807\u8bc6
application.sign=xx
#127.0.0.1
registry.address=zookeeper://127.0.0.1:xxxx
#x1
x1.reference.version=1.0.0
x1.reference.group=shared
x1.reference.timeout=600000
x1.reference.retries=1
x1.reference.init=true
#x2
x2.reference.version=1.0.0
x2.reference.group=yy
x2.reference.timeout=600000
x2.reference.retries=1
x2.reference.init=true
1.在公共模块xxx-api编写service
package xx.xx.xx.xx;
import xx.xx.xx.xx.ZgCate;
import xx.xx.xx.xx.BaseService;
/**
* 专柜分类表数据接口
*/
public interface ZgCateService extends BaseService<ZgCate, String> {
}
2.在xxx-serviceImpl模块编写serviceImpl
@Service("xxZgCateServiceImpl")
public class ZgCateServiceImpl extends BaseServiceImpl<ZgCate, String> implements ZgCateService{
@Resource(name="xxZgCateDaoImpl")
private ZgCateDao zgCateDao;
@Override
public BaseDao<ZgCate, String> getBaseDao() {
return this.zgCateDao;
}
3.在xxx-dubbo模块引入api模块及xxx-serviceImpl
<dependencies>
<dependency>
<groupId>xx.xx.xx</groupId>
<artifactId>xxxx-api</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>xx.xx.xx</groupId>
<artifactId>xxx-serviceImpl</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
4.xxx-dubbo模块暴露服务
<!-- 专柜分类表 -->
<dubbo:service interface="xx.xx.xx.xx.ZgCateService"
ref="xxZgCateServiceImpl" version="${xx.xx.version}"
group="${xx.xx.group}" timeout="${xx.xx.timeout}"
retries="${xx.xx.retries}" />
5.在web模块引用服务
<!-- 专柜分类表 -->
<dubbo:reference id="weipuZgCateService"
interface="xx.xx.xx.xx.ZgCateService" version="${xx.xx.version}"
group="${xx.xx.group}" timeout="${xx.xx.timeout}"
retries="${xx.xx.retries}" />
6.在web模块代码中使用
@Controller("ZgCate")
@RequestMapping("/zgCate")
public class ZgCateController extends BasexxxController {
@Resource
private ZgCateService zgCateService;
....
简单流程:根据配置文件访问zookeeper获取服务的地址列表,进而远程调用服务.