7.5.7:注入嵌套Bean

如果某个Bean所依赖的Bean不想被Spring容器直接访问,可以使用嵌套Bean<bean.../>元素用来定义嵌套Bean,嵌套Bean只对嵌套它的外部Bean有效,Spring容器无法直接访问嵌套Bean,因此定义嵌套Bean时无须指定id属性:

Axe.java :

public interface Axe {
	public String chop();
}
Person.java :

public interface Person {
	public void useAxe();
}
Chinese.java :

public class Chinese implements Person{
	
	private Axe axe;
	
	public void setAxe(Axe axe) {
		this.axe = axe;
	}

	@Override
	public void useAxe() {
		System.out.println(axe.chop());
	}
	
}
SteelAxe.java :

public class SteelAxe implements Axe{

	@Override
	public String chop() {
		return "钢斧砍柴好快";
	}

}
bean.xml核心配置:

<bean id="chinese" class="com.bean.Chinese">
     <property name="axe">
         <bean class="com.bean.SteelAxe"/>
     </property>
</bean>
采用上面的配置形式可以保证嵌套Bean不能被容器访问,因此不用担心其他程序修改嵌套Bean。外部Bean的用法与之前的用法完全一样。

嵌套Bean限制了Bean的访问,提高了程序的内聚性。

使用嵌套Bean与使用ref引用容器中另一个Bean在本质上是一样的。其实,为Bean实例注入属性,当属性的类型为复合类型时,就需要传入一个Java对象,于是有两种方式:

① 使用ref引用一个容器中已经配置的Bean(Java对象)。

② 使用bean临时配置一个嵌套Bean(Java对象)。

Test.java :

public class Test {

	public static void main(String[] args) {
		
		ApplicationContext ctx=new ClassPathXmlApplicationContext("bean.xml");
		Person p=(Person) ctx.getBean("chinese");
		p.useAxe();//钢斧砍柴好快
	}

}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值