首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

系统架构设计师:层次式架构设计理论与实践--业务逻辑层组件设计

业务逻辑组件分为接口和实现类两个部分。

接口用于定义业务逻辑组件,定义业务逻辑组件必须实现的方法是整个系统运行的核心。通常按模块来设计业务逻辑组件,每个模块设计一个业务逻辑组件,并且每个业务逻辑组件以多个DAO(Data Access Object)组件作为基础,从而实现对外提供系统的业务逻辑服务。增加业务逻辑组件的接口,是为了提供更好的解耦,控制器无须与具体的业务逻辑组件耦合,而是面向接口编程。

1.业务逻辑组件的实现类

业务逻辑组件以DAO组件为基础,必须接收 Spring容器注入的DAO组件,因此必须为业务逻辑组件的实现类提供对应的 setter方法。业务逻辑组件的实现类将DAO组件接口实例作为属性(面向接口编程),而对于复杂的业务逻辑,可能需要访问多个对象的数据,那么只需在这个方法里调用多个DAO接口,将具体实现委派给DAO完成。

2.业务逻辑组件的配置

由于业务逻辑组件的DAO组件从未被初始化过,那么业务方法如何完成?DAO组件初始化是由 Spring的反向控制(Inverse of Control,IoC)或者称为依赖注入(Dependency Injection,DI)机制完成的。为此,还需要在applicationContext.xm1里面配置FacadeManager组件。定义FacadeManager组件时必须为其配置所需要的DAO组件,配置信息表示Base-Manager继承刚才配置的事务代理模板。并且由容器给BascManagcr注入DAO的组件,即BaseDA0Hibernate。而 target 则是TransactionProxy FactoryBean需要指定的属性,TransactionProxyFactoryBean负责为某个bean实例生成代理,代理必须有个目标,target 属性则用于指定目标。

当然,也可以不使用事务代理模板及嵌套 bean,而是为组件指定单独的事务代理属性,让事务代理的目标引用容器中已经存在的 bcan。applicationContext.xm1文件的源代码配置了应用的数据源和 SessionFactory等 bean,而业务逻辑组件也被部署在该文件中。

在配置文件中,采用继承业务逻辑组件的事务代理,将原有的业务逻辑组件作为嵌套bean配置,避免了直接调用没有事务特性的业务逻辑组件。

系统实现了所有的后台业务逻辑,并且向外提供了统一的Facade接口,前台Web层仅仅依赖这个Facade接口。这样,Web层与后台业务层的耦合已经非常松散,系统可以在不同的We b框架中方便切换,即使将整个Web层替换掉也非常容易。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/ODZt8i12pbP1LiHItxTWMwbw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券