`

Spring中depends-on属性

阅读更多
有时候在创建某个Bean之前,需要先创建另一个Bean,这时可以使用depends-on属性。
public class Shared {

private static String value;

public static String getValue() {
return value;
}

public static void setValue(String value) {
Shared.value = value;
}

}

public class User {

public User() {
System.out.println("User initialized");
Shared.setValue("Set value in User Constructor!");
}

}

public class Goods {

public Goods() {
System.out.println("Goods initialized");
}

public String toString() {
return "Shared.getValue() = " + Shared.getValue();
}

}

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <bean id="user" class="User"/>
   
    <bean id="goods" class="Goods"/>

</beans>

//测试
public static void main(String[] args) {
XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("beans-config.xml"));
Goods goods = (Goods)beanFactory.getBean("goods");
System.out.println(goods);
}
/**Output:
Goods initialized
Shared.getValue() = null
*/
从输出看到,Shared.value属性没有赋值,而给Shared.value属性赋值需要实例化User类,所以我们实例化Goods之前要先实例化User。
修改bean定义文件
<bean id="goods" class="Goods" depends-on="user"/>

再次运行测试
/**Output:
User initialized
Goods initialized
Shared.getValue() = Set value in User Constructor!
*/
可以看到,在实例化Goods之前先实例化了User。
分享到:
评论
2 楼 ko889910 2015-11-12  
实测通过ApplicationContext ac = new ClassPathXmlApplicationContext("depends_on.xml");
方式加载bean,和通过XmlBeanFactory 效果不同,通过ApplicationContext 默认所有的bean都是非赖加载,而通过XmlBeanFactory 都是懒加载的,所以在ApplicationContext 容器中不管是否设置依赖关系通过最后的得出结果都是一致的
1 楼 _jessic_ 2011-11-16  
牛x,今天搜个东西,竟然又搜到你了。。

--王安玉

相关推荐

    spring 的parent属性示例

    spring框架中bean标签parent属性的各类使用范例 总计12个范例,涵盖了class、init-method、 factory-method、lazy-init、 depends-on、autowire 多种属性的组合使用

    SSH笔记-依赖、继承bean的配置

    SSH笔记-在Spring配置文件中,通过parent属性和depends-on属性来实现依赖、继承bean的配置

    Spring IOC Bean标签属性介绍(教学视频+源代码)

    1.8 depends-on 1.8.0 实体类JavaBean 1.8.0.1 Student类 1.8.1 配置文件都不加lazy-init=true 1.8.2 被依赖者(Student)加了lazy-init="true" 1.8.3 依赖者(依赖其它类)(User)加了lazy-init="true" 1.8.4 两者都...

    Spring-Reference_zh_CN(Spring中文参考手册)

    3.3.4. 使用depends-on 3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.6.1. 设置Bean使自动装配失效 3.3.7. 依赖检查 3.3.8. 方法注入 3.3.8.1. Lookup方法注入 3.3.8.2. 自定义方法的替代方案 3.4....

    spring框架技术+第2天+xmind思维导图

    容器中实现懒加载.dependsOn属性;depends-on 在正式的程序开始之前,要预先加载一部分内容.依赖注入三种方式【手动装配-非注解方式】;构造函数注入 index:可省略,参数下标,默认从0开始 name :可省略,...

    spring.net中文手册在线版

    4.3.7.使用depends-on 4.3.8.自动装配协作对象 4.3.9.检查依赖项 4.4.类型转换 4.4.1.枚举类型的转换 4.4.2.内置的类型转换器 4.4.3.自定义类型转换器 4.4.3.1.使用CustomConverterConfigurer类 4.5.自定义对象的...

    Spring中文帮助文档

    3.3.3. 使用depends-on 3.3.4. 延迟初始化bean 3.3.5. 自动装配(autowire)协作者 3.3.6. 依赖检查 3.3.7. 方法注入 3.4. Bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. Singleton ...

    Spring 3 Reference中文

    4.4.3 使用depends-on 54 4.4.4 延迟初始化bean . 55 4.4.5 自动装配协作者.. 55 4.4.5.1 自动装配的限制和缺点.. 56 4.4.5.2 从自动装配中排除bean. 57 4.4.6 方法注入. 57 4.4.6.1...

    spring chm文档

    3.3.4. 使用depends-on 3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. 其他作用域 ...

    Spring API

    3.3.3. 使用depends-on 3.3.4. 延迟初始化bean 3.3.5. 自动装配(autowire)协作者 3.3.6. 依赖检查 3.3.7. 方法注入 3.4. Bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. Singleton ...

    Spring 2.0 开发参考手册

    3.3.4. 使用depends-on 3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. 其他作用域 ...

    Spring.net框架

    在Step3到Step5的例子中,我们将利用Spring.net提供的Ioc框架,轻松完 成解耦以及系统改造等工作。 一、类之间的依赖 我们的第一个例子主要用于说明程序的基本构造,并且作为一个反面典型,引出为什么要解耦,以及...

    spring3.1中文参考文档

    spring3.1中文参考文档,南磊翻译,现在有4章,目录如下: 第一部分 Spring framework概述.......................................................................................................................

Global site tag (gtag.js) - Google Analytics