构造注入

2018-02-03 10:39:16来源:oschina作者:小伟_乌牛人点击

分享

之前写的是根据setter设值注入,还有一种为bean注入值的方法通过构造器注入。还是通过“人”和“斧子”之间的关系举例;


Chinese类注入方式构造器注入;


package com.custle.spring;
public class Chinese implements Person {
private Axe axe;

//构造器注入所需要的斧子
public Chinese(Axe axe) {
this.axe = axe;
}

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

将配置文件中的property修改为


<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">







其中index用于指定构造器参数位置,“0”表示为该构造器中的第一个参数。


构造注入和设置注入区别在于:创建Chinese时,注入"斧子"axe的时间不同,设值注入先通过Chinese的无参构造器创建一个Bean实列,然后通过propery为setAxe()注入,而构造注入是当该Bean实列创建完成后就已经完成了依赖注入关系。


注意:交由给Spring管理的Bean,没有使用构造注入时,一定要含有无参构造方法。否则该Bean无法被实列化。

微信扫一扫

第七城市微信公众平台