5.3、创建用户中心项目
在 IDEA 中,创建dianshang-user
子模块,并依赖dianshang-common
模块
<dependencies> <dependency> <groupId>org.project.demo</groupId> <artifactId>dianshang-common</artifactId> <version>1.0.0</version> </dependency> </dependencies>
同时,创建dianshang-user-provider
和dianshang-user-api
模块。
- dianshang-user-api:主要对其他服务提供接口暴露
- dianshang-user-provider:类似一个web工程,主要负责基础业务的
crud
,同时依赖dianshang-user-api
模块
5.3.1、配置dubbo服务
在dianshang-user-provider
的application.yml
文件中配置dubbo
服务,如下:
#用户中心服务端口 server: port: 8080 #数据源配置 spring: datasource: druid: driver-class-name: com.mysql.cj.jdbc.Driver url: "jdbc:mysql://localhost:3306/dianshang-user" username: root password: 111111 #dubbo配置 dubbo: scan: # 包名根据自己的实际情况写 base-packages: org.project.dianshang.user protocol: port: 20880 name: dubbo registry: #zookeeper注册中心地址 address: zookeeper://192.168.0.107:2181
5.3.2、编写服务暴露接口以及实现类
在dianshang-user-api
模块中,创建一个UserApi
接口,以及返回参数对象UserVo
!
public interface UserApi { /** * 查询用户信息 * @param userId * @return */ UserVo findUserById(String userId); }
其中UserVo
,需要实现序列化,如下:
@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class UserVo implements Serializable { private static final long serialVersionUID = 1L; /** * 用户ID */ private String userId; /** * 用户中文名 */ private String userName; }
在dianshang-user-provider
模块中,编写UserApi
接口实现类,如下:
@Service(interfaceClass =UserApi.class) @Component public class UserProvider implements UserApi { @Autowired private UserService userService; @Override public UserVo findUserById(String userId) { QueryWrapper<User> queryWrapper = new QueryWrapper<User>(); queryWrapper.eq("user_id",userId); User source = userService.getOne(queryWrapper); if(source != null){ UserVo vo = new UserVo(); BeanUtils.copyProperties(source,vo); return vo; } return null; } }
其中的注解@Service
指的是org.apache.dubbo.config.annotation.Service
下的注解,而不是Spring
下的注解哦!
接着,我们继续创建商品中心项目!
5.4、创建商品中心项目
与用户中心项目类似,在 IDEA 中,创建dianshang-platform
子模块,并依赖dianshang-common
模块
<dependencies> <dependency> <groupId>org.project.demo</groupId> <artifactId>dianshang-common</artifactId> <version>1.0.0</version> </dependency> </dependencies>
同时,创建dianshang-platform-provider
和dianshang-platform-api
模块。
- dianshang-platform-api:主要对其他服务提供接口暴露
- dianshang-platform-provider:类似一个web工程,主要负责基础业务的
crud
,同时依赖dianshang-platform-api
模块
5.4.1、配置dubbo服务
在dianshang-platform-provider
的application.yml
文件中配置dubbo
服务,如下:
#用户中心服务端口 server: port: 8081 #数据源配置 spring: datasource: druid: driver-class-name: com.mysql.cj.jdbc.Driver url: "jdbc:mysql://localhost:3306/dianshang-platform" username: root password: 111111 #dubbo配置 dubbo: scan: # 包名根据自己的实际情况写 base-packages: org.project.dianshang.platform protocol: port: 20881 name: dubbo registry: #zookeeper注册中心地址 address: zookeeper://192.168.0.107:2181
5.4.2、编写服务暴露接口以及实现类
在dianshang-platform-api
模块中,创建一个ProductApi
接口,以及返回参数对象ProductVo
!
public interface ProductApi { /** * 通过商品ID,查询商品信息 * @param productId * @return */ ProductVo queryProductInfoById(String productId); }
其中ProductVo
,需要实现序列化,如下:
@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class ProductVo implements Serializable { private static final long serialVersionUID = 1L; /**商品ID*/ private String productId; /**商品名称*/ private String productName; /**商品价格*/ private BigDecimal productPrice; }
在dianshang-platform-provider
模块中,编写ProductApi
接口实现类,如下:
@Service(interfaceClass = ProductApi.class) @Component public class ProductProvider implements ProductApi { @Autowired private ProductService productService; @Override public ProductVo queryProductInfoById(String productId) { //通过商品ID查询信息 Product source = productService.getById(productId); if(source != null){ ProductVo vo = new ProductVo(); BeanUtils.copyProperties(source,vo); return vo; } return null; } }
接着,我们继续创建订单中心项目!
5.5、创建订单中心项目
与商品中心项目类似,在 IDEA 中,创建dianshang-business
子模块,并依赖dianshang-common
模块
<dependencies> <dependency> <groupId>org.project.demo</groupId> <artifactId>dianshang-common</artifactId> <version>1.0.0</version> </dependency> </dependencies>
同时,创建dianshang-business-provider
和dianshang-business-api
模块。
- dianshang-business-api:主要对其他服务提供接口暴露
- dianshang-business-provider:类似一个web工程,主要负责基础业务的
crud
,同时依赖dianshang-business-api
模块
5.5.1、配置dubbo服务
在dianshang-business-provider
的application.yml
文件中配置dubbo
服务,如下:
#用户中心服务端口 server: port: 8082 #数据源配置 spring: datasource: druid: driver-class-name: com.mysql.cj.jdbc.Driver url: "jdbc:mysql://localhost:3306/dianshang-business" username: root password: 111111 #dubbo配置 dubbo: scan: # 包名根据自己的实际情况写 base-packages: org.project.dianshang.business protocol: port: 20882 name: dubbo registry: #zookeeper注册中心地址 address: zookeeper://192.168.0.107:2181
5.5.2、编写服务暴露接口以及实现类
在dianshang-business-api
模块中,创建一个OrderApi
接口,以及返回参数对象OrderVo
!
public interface OrderApi { /** * 通过用户ID,查询用户订单信息 * @param userId * @return */ List<OrderVo> queryOrderByUserId(String userId); }
其中OrderVo
,需要实现序列化,如下:
@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class OrderVo implements Serializable { private static final long serialVersionUID = 1L; /**订单ID*/ private String orderId; /**订单编号*/ private String orderNo; /**订单金额*/ private BigDecimal orderPrice; /**下单时间*/ private Date orderTime; }