有时候在创建某个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。
分享到:
相关推荐
- **依赖顺序**:通过 `depends-on` 属性控制 Bean 之间的依赖顺序。 **3.2.5 懒加载 Bean** - **懒加载机制**:某些情况下,可以通过配置将 Bean 设置为懒加载模式,以减少启动时的资源消耗。 **3.2.6 自动...
- **depends-on 属性**:该属性可以确保某个服务在另一个服务之前被注册或在另一个服务之后被注销。 - **context-class-loader 属性**:用于控制服务的 ClassLoader 行为,确保服务可以正确地访问类和资源。 通过...
- **depends-on属性**:指定Bean的依赖关系,确保某些Bean在其他Bean之前初始化。 #### `<property>`元素 `<property>`元素用于配置Bean的属性。它具有以下属性: - **name属性**:表示要设置的属性名称。 - **...
- **Using depends-on**:说明了如何指定一个对象依赖于另一个对象的初始化。 - **Lazily-initialized objects**:讨论了延迟加载对象的实现方式。 - **Autowiring collaborators**:介绍了一种自动装配依赖项的方法...
文档还提到了一系列用于Code Config的属性,如`Configuration`、`Definition`、`DependsOn`、`Import`、`ImportResource`、`Lazy`和`Scope`属性,它们分别用于标记配置类、定义bean、指定依赖关系、导入其他配置、...
spring框架中bean标签parent属性的各类使用范例 总计12个范例,涵盖了class、init-method、 factory-method、lazy-init、 depends-on、autowire 多种属性的组合使用
- **1.4.3 使用`depends-on`**: 可以通过`depends-on`属性指定当前Bean依赖于其他Bean,确保依赖的Bean先被创建。 - **1.4.4 惰性初始化Bean**: 通过设置`lazy-init`属性为`true`,可以让Spring容器延迟创建Bean,...
使用depends-on属性可以明确指定一个或多个Bean依赖其他Bean,以确保依赖的Bean优先于其他Bean实例化或销毁。 1.4.4 懒加载Bean 默认情况下,Spring在启动时创建和配置Bean。但有时Bean的创建可能会被延迟到第一次...
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....
- **depends-on属性**:确保某些Bean先于其他Bean初始化。 - **别名(Alias)**:创建Bean的别名,便于引用。 - **工厂Bean和工厂方法**:介绍如何使用工厂模式创建Bean。 - **命名空间**:简化属性注入的配置方式。 -...
- **Using depends-on**: 使用`depends-on`属性来指定Bean之间的依赖顺序。 - **Lazily-instantiated beans**: 延迟加载Bean,直到第一次请求时才初始化。 - **Autowiring collaborators**: 自动装配协作对象,简化...
Spring框架允许通过`depends-on`属性来指定一个Bean依赖于另一个Bean。这意味着,在创建依赖的Bean之前,必须先创建被依赖的Bean。 ##### 3.3.5 自动装配协作者 自动装配是一种方便的特性,允许Spring自动为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 中的 DependsOn 注解可以保证被依赖的 bean 先于当前 bean 被容器创建。例如,在 B 上加上注解 @DependsOn({"a"}),这样可以保证 A 先于 B 被初始化。 需要注意的是,bean 属性的注入是在初始化方法调用之前...
- 使用`depends-on`属性确保某些bean在其他bean之前初始化。 - **3.4.4 Lazy-initialized beans** - 指定了bean是否应该延迟初始化。 - **3.4.5 Autowiring collaborators** - 介绍了自动装配机制,即如何让...
- **使用 depends-on**:可以指定一个 Bean 必须在另一个 Bean 之前初始化。 - **自动装配协作对象**:Spring 支持自动装配协作对象到 Bean 中。 - **依赖检查**:Spring 可以帮助开发者检查 Bean 是否正确地装配了...
从中提取出`class`属性(定义bean的实现类)、`parent`属性(定义父bean)、以及其他的属性,如`scope`(作用域)、`abstract`(是否为抽象bean)、`lazy-init`(是否延迟初始化)、`autowire`(自动装配模式)、`...
- **使用 depends-on**:可以使用`depends-on`属性确保某些Bean在其他Bean之前初始化。 - **自动装配协作对象**:Spring支持自动装配协作对象,减少了显式配置的需求。 - **依赖检查**:Spring提供了一种机制来检查...
- 说明了如何使用depends-on属性确保bean的初始化顺序。 - **4.4.4 延迟初始化bean** - 介绍了如何配置bean为延迟初始化。 - **4.4.5 自动装配协作者** - 讲解了自动装配的原理和限制。 - **4.4.6 方法注入** - ...