【基于grpc从零开始搭建一个准生产分布式应用 - Service业务逻辑层实现】怀抱观古今,寝食展戏谑。这篇文章主要讲述基于grpc从零开始搭建一个准生产分布式应用 - Service业务逻辑层实现相关的知识,希望能为你提供帮助。
开始前必读:??基于grpc从零开始搭建一个准生产分布式应用(0) - quickStart??
前面章节的GRPC内基本是一个空实现,本章就实现下service业务逻辑层代码,因例子比较简单代码量也不算大,本章代码任务:1、用spring实现服务层,熟悉各注解的使用;2、实现一个VO逻辑,巩固mapStruct框架的使用。一、工程结构本章只涉及【base-grpc-framework-core】工程的改动,需改动的代码如下图所示:
二、创建必要的实体类2.1、MVC层VO类
package com.zd.baseframework.core.controller.core.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class SystemLogVo
private Long id;
private String bizId;
private Long userId;
private String trackUid;
private String code;
private String customCode;
private Integer state;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private LocalDateTime ctime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private LocalDateTime utime;
2.2、Service层BO类
package com.zd.baseframework.core.core.systemlog.model;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class SystemLogBo
private Long id;
private String bizId;
private Long userId;
private String trackUid;
private String code;
private String customCode;
private Integer state;
private LocalDateTime ctime;
private LocalDateTime utime;
package com.zd.baseframework.core.core.systemlog.model;
import lombok.Data;
@Data
public class SystemLogQueryBo
private String bizId;
private Long userId;
private String code;
2.3、VO和BO的专换工具类
新增代码第16~20行,转换VO和BO
/**
* @Title: com.zd.baseframework.core.controller.core.translator.SystemLogTranslator
* @Description http层与grpc层对象转换工具
* @author liudong
* @date 2022/6/15 8:52 PM
*/
@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED,
nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS,
imports = MapStructMapperUtil.class,
uses = BaseMapStructMapper.class)
public interface SystemLogTranslator
SystemLogTranslator INSTANCE = Mappers.getMapper(SystemLogTranslator.class);
/*查询请求参数转换*/
ListSystemLogRequest toGrpcQueryReqObject(SystemLogQueryRequest var);
/*查询返回结果转换,这两个是一组,其中在生成源码时toQueryResultVos会调用toQueryResultVo*/
SystemLogVo toQueryResultVo(SystemLogDto var);
List< SystemLogVo> toQueryResultVos(List< SystemLogDto> var);
/**
* @Title: com.zd.baseframework.core.core.systemlog.api.SystemLogDtoTranslator
* @Description grpc与service层对象转换工具类
* @author liudong
* @date 2022/6/15 8:59 PM
*/
@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED,
nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS,
imports = MapStructMapperUtil.class,
uses = BaseMapStructMapper.class)
public interface SystemLogDtoTranslator
SystemLogDtoTranslator INSTANCE = Mappers.getMapper(SystemLogDtoTranslator.class);
/*查询请求参数转换*/
SystemLogQueryBo toQueryBo(ListSystemLogRequest var);
/*返回结果转换*/
SystemLogDto toQueryResultDto(SystemLogBo var);
List< SystemLogDto> toQueryResultDtos(List< SystemLogBo> var);
三、创建Service接口和实现
3.1、接口定义
package com.zd.baseframework.core.core.systemlog.service;
public interface ISystemLogServcie
boolean createSystemLog(SystemLogBo systemLogBo);
List< SystemLogBo> listByCondition(SystemLogQueryBo systemLogQueryBo);
3.2、接口实现
package com.zd.baseframework.core.core.systemlog.service.impl;
@Service
@Slf4j
@Primary
public class SystemLogServcieImpl implements ISystemLogServcie
@Override
public boolean createSystemLog(SystemLogBo systemLogBo)
String trackLog = LogGenerator.trackLog();
log.info(trackLog
+ "createSystemLog=" + JSONUtil.toJsonStr(推荐阅读
- 处理用户输入与显示数据------------(更高级的getopts命令标准化选项)
- 处理用户输入与显示数据------------(getopt命令)
- 处理用户输入与显示数据------------(移位shift命令行参数选项)
- 处理用户输入与显示数据------------(参数计数获取所有数据)
- 蓝牙降噪耳机测试维度
- MySQL数据库(32)(触发器 trigger)
- 处理用户输入与显示数据------------(读取参数读取程序名称测试参数)
- spring4.1.8扩展实战之五(改变bean的定义(BeanFactoryPostProcessor接口))
- 结构化命令------------(if语句)