Spring中depends-on的作用是什么?
spring的IOC容器负责bean的管理,当实例化一个bean是,spring保证该Bean所依赖的其他bean已经初始化。一般情况下,用<ref>元素建立对其他bean的依赖关系。
比如:
<bean id="a" class="com.yanln.spring.bean.A"></bean>
<bean id="b" class="com.yanln.spring.bean.B" p:a-ref="a"></bean>
但在某些情况下,这种bean之间的依赖关系并不那么明显。
举个例子:某个论坛系统拥有很多系统参数(如会话过期时间、缓存更新时间等),这些系统参数用于控制系统的运行逻辑。比如:
public class SystemSettings{
//缓存更新时间
public static int REFRESH_CYCLE = 60;
......
}
在SystemSettings中为每一个系统参数提供了默认值,但对于一个灵活的论坛是需要提供一个管理后台的,在管理后台中可以调整这些系统参数并保存到后台数据库中,而在系统启动时,初始化程序从数据库后台加载这些系统参数的值来覆盖系统默认值。比如:
public class SystemInit{
public SystemInit(){
//模拟从数据库中加载的系统参数配置值
SystemSettings.REFRESH_CYCLE=100;
......
}
}
假设论坛系统有一个缓存刷新管理器,它需要根据系统参数SystemSettings.REFRESH_CYCLE创建缓存刷新定时任务:
public class CacheManager{
public CacheManager(){
Timer t = new Timer();
TimerTask cacheTask = new CacheTask();
//缓存刷新定时处理
t.schedule(cacheTask,0,SystemSettings.REFRESH_CYCLE);
}
......
}
在以上的实例中,CacheManager类需要用到SystemSetting类的值,而SystemSettings的值有SystemInit负责初始化,虽然CacheManager不直接依赖SystemInit,但从逻辑上看,CacheManager希望在SystemInit加载并完成系统参数设置后再启动,以获得最新的系统参数值。如果这三个bean都在spring配置文件中定义,我们如何保证SystemInit在CacheManager之前进行初始化呢?
spring允许用户通过depends-on属性指定bean前置依赖的bean,前置依赖的bean会在本bean实例化之前创建好:
<bean id="sysinit" class="SystemInit">
<bean id="manager" class="CacheManager" depends-on="sysinit"/>
如果前置依赖于多个 Bean,则可以通过分号,逗号或空格的方式配置 Bean 的名称。
本文转自:http://yanln.iteye.com/blog/2210723
Spring中depends-on的作用是什么?的更多相关文章
- EnableAutoConfiguration注解 Spring中@Import注解的作用和使用
EnableAutoConfiguration注解 http://www.51gjie.com/javaweb/1046.html springboot@EnableAutoConfiguration ...
- Spring中<context:annotation-config/>的作用
spring中<context:annotation-config/>配置的作用,现记录如下: <context:annotation-config/>的作用是向Spring容 ...
- Spring中的beanPostProcess的作用
BeanPostProcessor是Spring框架中非常重要的bean之一.贯穿在Spring容器中bean的初始化的整个过程. Spring中的beanpostProcess体系结构如下: 可以看 ...
- spring 中的断言的作用
org.springframework.util.AssertAssert翻译为中文为"断言".用过JUNIT的应该都知道这个概念了.就是断定某一个实际的值就为自己预期想得到的,如 ...
- cache在spring中使用
一:参考文章 (1)http://haohaoxuexi.iteye.com/blog/2123030 Spring使用Cache,这篇文章讲的比较详细. 注:本文是对参考文章和实际使用中经验的总结 ...
- spring中scope(作用越)理解
今天总结了一下spring中作用域scope的用法.在spring中作用域通过配置文件形式的用法如下. <bean id="role" class="spring. ...
- spring中的BeanFactory与ApplicationContext的作用和区别?
BeanFactory类关系继承图 1. BeanFactory类结构体系: BeanFactory接口及其子类定义了Spring IoC容器体系结构,由于BeanFactory体系非常的庞大和复杂, ...
- Spring中各个jar包的作用
spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar, aspects.jar, spring-portlet.jar, and spring-hibernate2. ...
- Spring中事务配置以及事务不起作用可能出现的问题
前言:在Spring中可以通过对方法进行事务的配置,而不是像原来通过手动写代码的方式实现事务的操作,这在很大程度上减少了开发的难度,本文介绍Spring事务配置的两种方式:基于配置文件的方式和基于注解 ...
- (转)web.xml中的contextConfigLocation在spring中的作用
(转)web.xml中的contextConfigLocation在spring中的作用 一.Spring如何使用多个xml配置文件 1.在web.xml中定义contextConfigLocat ...
随机推荐
- hdu 4738 2013杭州赛区网络赛 桥+重边+连通判断 ***
题意:有n座岛和m条桥,每条桥上有w个兵守着,现在要派不少于守桥的士兵数的人去炸桥,只能炸一条桥,使得这n座岛不连通,求最少要派多少人去. 处理重边 边在遍历的时候,第一个返回的一定是之前去的边,所以 ...
- hdu 2891 中国剩余定理
从6点看到10点,硬是没算出来,早知道玩游戏去了,艹,明天继续看 不爽,起来再看,终于算是弄懂了,以后超过一个小时的题不会再看了,不是题目看不懂,是水平不够 #include<cstdio> ...
- [Java][Weblogic] weblogic.net.http.SOAPHttpsURLConnection incompatible with javax.net.ssl.HttpsURLConnection解决办法
更新20141120: 我始终对修改生产上weblogic上的配置文件这一方法心存担忧(生产上的服务器不允许随便修改,可能会影响到其他应用),所以想使用代码的方式解决此问题,在对方法一失败原因进行了进 ...
- 把VSO作为GitHub上JavaScript项目的免费CI服务器
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:微软变得更加开放后,走向开放的不仅有.NET运行时.IDE工具,还有ALM服务器核心组 ...
- 【荐】Spring事务配置的五种方式
Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource.TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分. DataSo ...
- 以管理身份运行cmd
搜索出cmd程序,然后右键-以管理员身份运行
- merge布局
当LayoutInflater遇到这个标签时,它会跳过它,并将<merge />内的元素添加到<merge />的父元素里.迷惑了吗?让我们用<merge />来替 ...
- android之SharedPreferes
Android应用开发SharedPreferences存储数据的使用方法 SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的 ...
- sublime快捷键大全
转自:http://blog.useasp.net/archive/2013/06/14/sublime-text-2-all-default-Shortcuts-table-on-windows-t ...
- JAVA Day3
分支与循环 char sex = in.next().charAt(0); java中 ...