7.5.7 注入嵌套Bean
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 |