配置文件
# application.properties spring.application.name=dubbo-demo-provider spring.dubbo.application.id=dubbo-demo-provider spring.dubbo.application.name=dubbo-demo-provider spring.dubbo.registry.address=zookeeper://192.168.25.140:2181;zookeeper://192.168.25.140:2182;zookeeper://192.168.25.140:2183 spring.dubbo.server=true spring.dubbo.protocol.name=dubbo spring.dubbo.protocol.port=20880 复制代码
启动类
@EnableDubboConfiguration @SpringBootApplication public class ProviderBootstrap { public static void main(String[] args) throws IOException { SpringApplication.run(ProviderBootstrap.class,args); } } 复制代码
服务实现
@Component @Service(interfaceClass = IUserService.class) public class UserServiceImpl implements IUserService{ @Override public String sayHello(String name) { return "hello:"+name; } } 复制代码
服务消费者
添加依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.1.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--dubbo--> <dependency> <groupId>com.alibaba.spring.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <artifactId>log4j-to-slf4j</artifactId> <groupId>org.apache.logging.log4j</groupId> </exclusion> </exclusions> </dependency> <!--zookeeper--> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.10</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.9</version> <exclusions> <exclusion> <artifactId>slf4j-log4j12</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> </dependency> <!--API--> <dependency> <groupId>com.itheima.demo</groupId> <artifactId>dubbo-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> 复制代码
配置文件
# application.properties spring.application.name=dubbo-demo-consumer spring.dubbo.application.name=dubbo-demo-consumer spring.dubbo.application.id=dubbo-demo-consumer spring.dubbo.registry.address=zookeeper://192.168.25.140:2181;zookeeper://192.168.25.140:2182;zookeeper://192.168.25.140:2183 复制代码
启动类
@EnableDubboConfiguration @SpringBootApplication public class ConsumerBootstrap { public static void main(String[] args) { SpringApplication.run(ConsumerBootstrap.class); } } 复制代码
Controller
@RestController @RequestMapping("/user") public class UserController { @Reference private IUserService userService; @RequestMapping("/sayHello") public String sayHello(String name){ return userService.sayHello(name); } } 复制代码
环境搭建
数据库
惠券表
网络异常,图片无法展示
|
商品表
网络异常,图片无法展示
|
订单表
网络异常,图片无法展示
|
订单商品日志表
网络异常,图片无法展示
|
用户表
网络异常,图片无法展示
|
用户余额日志表
网络异常,图片无法展示
|
订单支付表
网络异常,图片无法展示
|
MQ消息生产表
网络异常,图片无法展示
|
MQ消息消费表
网络异常,图片无法展示
|
项目初始化
shop系统基于Maven进行项目管理
3.1.1 工程浏览
网络异常,图片无法展示
|
- 父工程:shop-parent
- 订单系统:shop-order-web
- 支付系统:shop-pay-web
- 优惠券服务:shop-coupon-service
- 订单服务:shop-order-service
- 支付服务:shop-pay-service
- 商品服务:shop-goods-service
- 用户服务:shop-user-service
- 实体类:shop-pojo
- 持久层:shop-dao
- 接口层:shop-api
- 工具工程:shop-common
共12个系统
工程关系
网络异常,图片无法展示
|
Mybatis逆向工程使用
代码生成
使用Mybatis逆向工程针对数据表生成CURD持久层代码
代码导入
- 将实体类导入到shop-pojo工程
- 在服务层工程中导入对应的Mapper类和对应配置文件
公共类介绍
- ID生成器
IDWorker:Twitter雪花算法 - 异常处理类
CustomerException:自定义异常类
CastException:异常抛出类 - 常量类
ShopCode:系统状态类 - 响应实体类
Result:封装响应状态和响应信息
下单业务
网络异常,图片无法展示
|
下单基本流程
接口定义
- IOrderService
public interface IOrderService { /** * 确认订单 * @param order * @return Result */ Result confirmOrder(TradeOrder order); } 复制代码
业务类实现
@Slf4j @Component @Service(interfaceClass = IOrderService.class) public class OrderServiceImpl implements IOrderService { @Override public Result confirmOrder(TradeOrder order) { //1.校验订单 //2.生成预订单 try { //3.扣减库存 //4.扣减优惠券 //5.使用余额 //6.确认订单 //7.返回成功状态 } catch (Exception e) { //1.确认订单失败,发送消息 //2.返回失败状态 } } } 复制代码