spring 3.x变通实现@Conditional注解的功能
Spring 实现 功能 注解 Conditional
2023-09-27 14:28:34 时间
在某些情况下,我们要根据当前的系统配置决定是否初始化一个bean,也就是条件性加载,比如本地缓存或者分布式缓存,亦或是采用http实现或者socket实现。在spring 4.x中,可以使用新增的@Conditional注解进行实现,在spring 3.x中,我们可以通过采用@Lazy延迟初始化+ApplicationContext.getBean的手工获取Bean的方式来实现相同的目标。
比如,在我们的系统中,由于客户端和服务端采用分布式的方式实现,由于某种原因,我们需要客户端和服务端采用JVM本地缓存实现,而客户端又不能直接访问数据库,操作本地缓存的接口又是采用公用jar,我们又不希望借用分布式缓存,这回增加很大的复杂性。因此,我们在实现时考虑根据当前节点是客户端还是服务端决定是直接从DB加载还是调用服务端加载,如果客户端,则通过调用服务端暴露API的DB加载返回,所以我们采用了这种类条件加载的方式实现了缓存的初始化。
相关文章
- tiny-spring 中IoC的实现
- spring.jar是包含有完整发布的单个jar 包,spring.jar中包含除了spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到 spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的。
- 菜鸟学习Spring——60s利用JoinPoint获取参数的值和方法名称
- SpringBoot 源码解析 (七)----- Spring Boot的核心能力 - SpringBoot如何实现SpringMvc的?
- Spring Boot 2.5 终于对数据源动刀了!
- 手把手带你入门 Spring Security!
- Spring AspectJ切入点语法详解
- 模拟实现Spring IoC功能
- 深入浅出学习Spring框架(三):AOP 详解
- Spring AOP 实现原理
- spring security四种实现方式
- Spring IOC/DI- 3 different types
- Spring MVC 实现文件的上传和下载
- 集成spring boot + mysql + docker实战
- ztree使用系列三(ztree与springmvc+spring+mybatis整合实现增删改查)
- 通过spring实现javamail发送邮件功能
- Spring进行TestNG测试中无法插入、删除数据库数据(access)的解决
- Spring Data Redis实现消息队列——发布/订阅模式
- 使用spring利用HandlerExceptionResolver实现全局异常捕获
- spring项目中的定时任务实现和问题解决
- Spring+Mybatis多数据源配置(三)——Spring如何获取Properties文件的信息