Spring Inner Bean
【摘要】 # Spring Inner Bean(内嵌Bean)SpringIOC容器在实例化Bean的时候,采用的是深度优先策略。也就是说,如果一个Bean存在于另一个Bean的配置定义内,那么内部Bean将优先得到实例化。这种内部Bean的定义方式就称为Inner Bean(内嵌Bean)。## 定义方式在Spring配置文件中,可以使用下列两种方式定义 Inner Bean:### <bean>...
# Spring Inner Bean(内嵌Bean)SpringIOC容器在实例化Bean的时候,采用的是深度优先策略。也就是说,如果一个Bean存在于另一个Bean的配置定义内,那么内部Bean将优先得到实例化。这种内部Bean的定义方式就称为Inner Bean(内嵌Bean)。## 定义方式在Spring配置文件中,可以使用下列两种方式定义 Inner Bean:### <bean> 元素方式
xml
<bean id="outerBean" class="...">
<property name="accountNumber">
<bean class="com....")>
...
</bean>
</property>
</bean>
<bean>
元素定义了 inner bean,使用 outerBean 的 accountNumber 属性进行注入。### 内部bean定义
xml
<bean id="outerBean" class="...">
<property name="accountNumber">
<bean class="com.">
<property name="bankName" value="..." />
</bean>
</property>
</bean>
内部bean采用`<bean>`的写法定义,但是没有id属性。## 特点- Inner Bean拥有独立的作用域。
- Inner Bean的生命周期依赖于外部Bean。外部Bean被销毁时,Inner Bean也会被销毁。
- Inner Bean可以互相引用。
- Inner Bean可以访问外部Bean的属性和方法。## 使用时机我们通常在需要满足以下要求的时候使用Inner Bean:- 一个Bean需要注入到另一个Bean的属性中。
- 内部Bean的作用域仅限于外部Bean的生命周期内。
- 不需要为内部Bean指定ID。## 示例
- Inner Bean的生命周期依赖于外部Bean。外部Bean被销毁时,Inner Bean也会被销毁。
- Inner Bean可以互相引用。
- Inner Bean可以访问外部Bean的属性和方法。## 使用时机我们通常在需要满足以下要求的时候使用Inner Bean:- 一个Bean需要注入到另一个Bean的属性中。
- 内部Bean的作用域仅限于外部Bean的生命周期内。
- 不需要为内部Bean指定ID。## 示例
xml
<bean id="accountService" class="AccountService">
<property name="accountDao">
<bean id="accountDao" class="AccountDao" >
<!-- 依赖注入 -->
</bean>
</property>
</bean>
上述示例中,
- Inner Bean的生命周期依赖于外部Bean。此外Inner Bean还可以嵌套Inner Bean,Spring IOC容器会采用深度优先策略实例化这些Bean。
accountDao
是`accountService`的内部Bean,它们的生命周期相同。`accountDao`注入到`accountService`的属性中。总的来说,Spring Inner Bean可以很方便的将复杂Bean的属性注入另一个Bean,降低耦合度。使用Inner Bean时需要注意:- Inner Bean的访问范围仅限外部Bean。- Inner Bean的生命周期依赖于外部Bean。此外Inner Bean还可以嵌套Inner Bean,Spring IOC容器会采用深度优先策略实例化这些Bean。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)