携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第9天,点击查看活动详情
前言
不知不觉又到了周六了,早上起来听到窗外鸟叫悠闲地一天又开始了~
书接上文,上次我们讲了我们公司微服务的一些注解,其实在不同公司他们有不同的整合方式,我们公司更推荐使用插件化的形式来进行开发,每个开发人员各司其职没有代码上的冲突,引进他的功能只需要加个注解就行,每个注解都是一个大功能项目。
领域驱动
这是我们其中一个注解中的功能项目,从图片中可以看出文件特别多,刚入行的新人可能会奇怪不是三层架构吗?control呢?service呢?repository呢?三层架构怎么都不见了,跟网上学的不一样。
恭喜你答对了,我们确实不完全采用三层架构,我们使用的是三层架构的多加一层四层架构,也被成为领域驱动设计简称DDD。你所看到的是api与app这两个就是你平所见到的control层与service层,一般我会成为入口层与大业务层。既然有大业务层那么就有小业务层,通过小业务层的聚合来实现大业务层的完善。小业务层就是domain中的business层,可以这样理解多个business组成一个service,简单拿一个业务给大家看下就知道了。
@Service
public class AeratorLogServiceImpl implements AeratorLogService {
@Autowired
private AeratorLogBusiness business;
@Autowired
private Validator validator;
@Autowired
private AquafarmUserRelBusiness userRelBusiness;
public Page<AeratorLog> getPageLog(AeratorLogPageCondition condition, PageRequest pageRequest) {
ValidUtils.valid(this.validator, condition, new Class[0]);
condition.setTypes((List)Arrays.stream(condition.getType().split(",")).collect(Collectors.toList()));
List<Long> aquafarmIds = this.getAquafarmIds(condition.getTenantId(), condition.getUserId());
return aquafarmIds.isEmpty() ? new Page() : this.business.getPageByAquafarmIds(condition, aquafarmIds, pageRequest);
}
}
从上面代码中可以看出@Autowired 导入了多个business ,而这个大类就是Service层,也是大业务层。