spring 3.x变通实现@Conditional注解的功能
2016-05-17 20:12
399 查看
在某些情况下,我们要根据当前的系统配置决定是否初始化一个bean,也就是条件性加载,比如本地缓存或者分布式缓存,亦或是采用http实现或者socket实现。在spring 4.x中,可以使用新增的@Conditional注解进行实现,在spring 3.x中,我们可以通过采用@Lazy延迟初始化+ApplicationContext.getBean的手工获取Bean的方式来实现相同的目标。
比如,在我们的系统中,由于客户端和服务端采用分布式的方式实现,由于某种原因,我们需要客户端和服务端采用JVM本地缓存实现,而客户端又不能直接访问数据库,操作本地缓存的接口又是采用公用jar,我们又不希望借用分布式缓存,这回增加很大的复杂性。因此,我们在实现时考虑根据当前节点是客户端还是服务端决定是直接从DB加载还是调用服务端加载,如果客户端,则通过调用服务端暴露API的DB加载返回,所以我们采用了这种类条件加载的方式实现了缓存的初始化。
比如,在我们的系统中,由于客户端和服务端采用分布式的方式实现,由于某种原因,我们需要客户端和服务端采用JVM本地缓存实现,而客户端又不能直接访问数据库,操作本地缓存的接口又是采用公用jar,我们又不希望借用分布式缓存,这回增加很大的复杂性。因此,我们在实现时考虑根据当前节点是客户端还是服务端决定是直接从DB加载还是调用服务端加载,如果客户端,则通过调用服务端暴露API的DB加载返回,所以我们采用了这种类条件加载的方式实现了缓存的初始化。
相关文章推荐
- 基于SpringMVC的RESTful API设计
- java的动态绑定与静态绑定
- Rxjava中的range的简单使用。
- java之输入分数(小数)评等级
- java 字节数组转int
- 我爱学Java之四种引用类型(强软弱虚)
- Spring RMI Example
- JAVA线程-线程间通信
- Java二叉树的递归,非递归遍历,高度,节点数,叶子节点数
- Java内存模型深度解析
- java GZIP压缩和解压
- Rxjava中的doOnNext的作用和在哪里执行
- 大话Java事件监听模型
- Java 抽象类和接口的总结
- java之将101-300范围内整数分解为质因数
- Java字符串方法replace()、replaceAll()、replaceFirst()的区别和使用方法
- mybatis学习笔记——java.lang.NullPointerException
- 使用eclipse+pydev远程调试OpenStack
- java基础(5) 数组的操作
- Spring jdbc批量存储数据