文件存储服务替换思路

💡 运用多态思想、@ConditionalOnProperty 注解


为符合使用直觉,现已将MongoDBService接口重命名为FileStorageService
以下FileStorageService便是指以前的MongoDBService


一、重新实现FileStorageService接口

1.查看材料管理代码可以看到,其实系统中所有的业务功能使用文件存储服务都是通过调用FileStorageService接口中定义的方法完成的。

2.FileStorageService接口目前有一个实现类MongoDBServiceImpl,这里面通过对mongoDB进行操作实现了具体的服务逻辑。

3.考虑不修改原代码,我们决定新写一个实现类ObsServiceImpl实现FileStorageService接口,在该实现类操作Obs来实现接口中的服务方法。

二、多实现情况选择性注入实现类

1.ObsServiceImpl完成后,需要解决注入选择问题。Spring会发现两个FileStorageService的实现类,它不知道去实例化哪一个来作为实际业务逻辑Bean

2.网上方法很多,我们期望各个子系统只需要在一个地方进行配置即可决定系统使用mongoobs实现文件存储服务。最适合我们的是使用条件注解中的***@ConditionalOnProperty***,通过配置来控制类是否加入SpringIOC容器:
image.png
第一个参数表示读取的配置文件的key,第二个参数表示的是满足什么值才加入IOC

3.为适配暂未有改造计划的子系统,避免每个系统都改配置文件,可以在MongoDBServiceImpl上使用@ConditionalOnProperty另一个参数:
image.png
第三个参数表示配置缺失时是否默认加入IOC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值