一.公共接口(服务提供者需要实现,消费者需要引用)
1.pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cm_project</artifactId>
<groupId>com.yrp</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cm_commons_api</artifactId>
<dependencies>
<dependency>
<groupId>com.yrp</groupId>
<artifactId>cm_pojo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
2. 接口定义
public interface DeptDubboService {
List<Dept> selectAllDept();
}
二.mapper层的定义
1.pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cm_project</artifactId>
<groupId>com.yrp</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cm_mapper</artifactId>
<dependencies>
<dependency>
<groupId>com.yrp</groupId>
<artifactId>cm_pojo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
</project>
2.配置文件application-mapper.yml
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://cdb-p64cr19p.gz.tencentcdb.com:10132/dubbo
username: root
password:
mybatis:
mapper-locations: classpath:mybatis/*.xml
三.服务提供者
1.pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cm_project</artifactId>
<groupId>com.yrp</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cm_provider</artifactId>
<dependencies>
<dependency>
<groupId>com.yrp</groupId>
<artifactId>cm_commons_api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yrp</groupId>
<artifactId>cm_mapper</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
</dependency>
</dependencies>
</project>
2.配置文件application.yml
dubbo:
application:
name: dubbo_provider
registry:
address: zookeeper://129.204.137.31:2181
spring:
profiles:
active: mapper
3.实现类
注意:需要用DubboService注解,表示将该实现类放到spring容器中,并注册到注册中心
@DubboService
public class DeptServiceImpl implements DeptDubboService {
@Autowired
private DeptMapper deptMapper;
@Override
public List<Dept> selectAllDept() {
DeptExample deptExample=new DeptExample();
return deptMapper.selectByExample(deptExample);
}
}
四.服务消费者
1.pom.xml:
需要spring-boot-starter-web和spring-boot-starter-thymeleaf
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>cm_project</artifactId>
<groupId>com.yrp</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cm_consumer_dept</artifactId>
<dependencies>
<dependency>
<groupId>com.yrp</groupId>
<artifactId>cm_commons_api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
</dependency>
</dependencies>
</project>
2.配置文件
dubbo:
application:
name: cm_dept
registry:
address: zookeeper://129.204.137.31:2181
server:
port: 8081
3.接口
public interface DeptService {
List<Dept> selectAllDept();
}
4.实现类:
这边需要引用公共接口,用@DubboReference来实现
@Service
public class DeptServiceImpl implements DeptService {
@DubboReference
private DeptDubboService deptDubboService;
@Override
public List<Dept> selectAllDept() {
return deptDubboService.selectAllDept();
}
}