Spring高级应用之注入嵌套Bean

    在Spring中,如果某个Bean所依赖的Bean不想被Spring容器直接访问,可以使用嵌套Bean。和普通的Bean一样,使用<bean>元素来定义嵌套的Bean,嵌套Bean只对它的外部的Bean有效,Spring容器无法直接访问嵌套的Bean,因此定义嵌套Bean也无需指定id属性。如下配置片段是一个嵌套Bean的示例:

?
1
2
3
4
5
6
< bean  id = "Student"  class = "com.abc.Student" >
     <!-- 下面是一个普通的属性 -->
     < property  name = "name"  value = "张三"  />
     <!-- 下面的属性是一个嵌套的Bean,对于和Student平级的Bean来说,这个Bean是不可见的,Spring容器也无法访问 -->
     < bean  class = "com.abc.School"  />
</ bean >

    采用上面的配置形式可以保证嵌套Bean不能被容器访问,因此不用担心其他程序修改嵌套Bean。外部Bean的用法和使用结果和以前没有区别。

    嵌套Bean提高了Bean的内聚性,但是降低了程序的灵活性。只有在确定无需通过Spring容器访问某个Bean实例时,才考虑使用嵌套Bean来定义。

    使用嵌套Bean与使用ref引用容器中另一个Bean在本质上是一样的,但是,如果使用ref,则ref的这个Bean不仅可以被容器直接访问(如使用ClassPathXmlApplicationContext的getBean()方法获取其实例),还可以为其它的Bean所使用(如果这些Bean中含有这个类型的属性)。所以是否使用嵌套Bean,得看实际需求。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值