代码拉取完成,页面将自动刷新
#20190621
Saas 平台在设计的过程中,会出现不同租户的业务需求不一致的情况,在这种情况下,则可以考虑使用 SPI 来支持定制化的服务
本例定义基础的 ISPIInterface 接口类,所有牵扯到 SPI 扩展的地方,业务接口(IItemPrice)都继承此接口类
本例定义基础的 SPIInterfaceFactoryBean 类,在具体的调用执行时,根据传入的第一个参数作为条件进行匹配,执行后返回对应的结果;
增加Bean 定义,将 SPIInterfaceFactoryBean 纳入 Spring Bean 容器中;
/**
* 定义 FactoryBean
* @param applicationContext
* @return
*/
@Bean
public SPIInterfaceFactoryBean spiInterfaceFactoryBean(ApplicationContext applicationContext) {
return new SPIInterfaceFactoryBean(applicationContext, IItemPrice.class);
}
/**
* 代理类
* @param spiInterfaceFactoryBean
* @return
* @throws Exception
*/
@Bean
public IItemPrice itemPriceProxy(SPIInterfaceFactoryBean spiInterfaceFactoryBean) throws Exception {
return (IItemPrice) spiInterfaceFactoryBean.getObject();
}
具体的业务使用,详见 Demo 包下的类文件。
定义不同商品的价格实现类,根据传入的参数是 apple 还是 banana, 返回不同的参数;
在 Saas 平台设计的过程中,如果遇到定制化的业务需求的话,则可以实现不同的接口,根据不同的业务场景进行不同的判断。
1、可以在方法实现上增加注解,走不通的判断;
2、可以在 conditionVerify 方法上进行判断,满足不同的条件进行调整, 当前示例是判断入参 LoginedUserVO 的参数,根据不同的租户进行不同的业务逻辑处理;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。