7.5.7 注入嵌套Bean
如果某个Bean
所依赖的Bean
不想被Spring
容器直接访问,则可以使用嵌套Bean
.
把<bean>
配置成<property>
或<constructor-args>
的子元素,那么该<bean>
元素配置的Bean
仅仅作为setter
注入、构造注入的参数,这种Bean
就是嵌套Bean
。由于容器不能获取嵌套Bean
,因此它不需要指定id
属性。
例如如下配置。
1 |
|
采用上面的配置形式可以保证嵌套Bean
不能被容器访问,因此不用担心其他程序修改嵌套Bean
。外部Bean
的用法与之前的用法完全一样,使用结果也没有区别。
什么时候用嵌套Bean
嵌套Bean
提高了程序的内聚性,但降低了程序的灵活性。只有在完全确定无须通过Spring
容器访问某个Bean
实例时,才考虑使用嵌套Bean
来配置该Bean
使用嵌套Bean
与使用ref
引用容器中另一个Bean
在本质上是一样的。Spring
框架的本质就是通过XML
配置文件来驱动Java
代码,当程序要调用setter
方法或有参数的构造器时,程序总需要传入参数值,随参数类型的不同, Spring
配置文件当然也要随之改变。
- 形参类型是基本类型、
String
、日期等,直接使用value
指定字面值即可。 - 形参类型是复合类(如
Person
、Dog
、Data Source
等),那就需要传入一个Java
对象作为实参,于是有三种方式:- 使用
ref
引用一个容器中已配置的Bean(Java
对象); - 使用自动装配
- 使用
<bean>
元素配置一个嵌套Bean(Java
对象);
- 使用
除此之外,形参类型还可能是Set
、List
、Map
等集合,也可能是数组
类型。接下来继续介绍如何在Spring
配置文件中配置set
、List
、Map
、数组
等参数值。
项目结构
1 | E:\workspace_QingLiangJiJavaEEQiYeYingYongShiZhang5\nestedBean |
原文链接: 7.5.7 注入嵌套Bean