spring入门(8)--装配Bean之自动装配 (二)

2014-11-24 11:14:44 · 作者: · 浏览: 1
blic void setDeptBean(DeptBean deptBean) {

this.deptBean = deptBean;

}

public void setCumputerBean(CumputerBean cumputerBean) {

this.cumputerBean = cumputerBean;

}

@Override

public String toString() {

return "EmployeeBean [deptBean=" + deptBean + ", cumputerBean="

+ cumputerBean + "]";

}


}
首先分析no、byName、byType的配置都是采用setter方法依赖注入实现的案例

1、no配置(通过ref=””引用需要的bean)

[java]
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.xsd">



















[java]
< 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.xsd">


















< 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.xsd">










2、byName配置(分析:会根据EmployeeBean中属性的名称 自动装配)

[java]
< 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.xsd">
























[java]
< 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.xsd">























< 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.xsd">

[java]

[java]

3、byType配置(分析:会根据EmployeeBean中属性的类型 自动装配)

[java]
< 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.xsd">























[java]
< 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.xsd">






















< 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.xsd">



注意:当根据byType类型装配时,当在容器内找到多个匹配的类型时会出现如下bug

org.springframework.beans.factory.UnsatisfiedDependencyException:

Error creating bean with name 'employeeBean' defined in class path resource [spring-byType.xml]: Unsatisfied dependency expressed through bean property 'deptBean': :

No qualifying bean of type [www.csdn.spring.autowire.bean.DeptBean] is defined: expected single matching bean but found 2: deptBean,deptBean1;

nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException:

No qualifying bean of type [www.csdn.spring.autowire.bean.DeptBean] is defined: expected single matching bean but found 2