具体的区别在下面xml代码段中已经详细描述!!!
Emp.java
package com.zt.ioc.auto;
public class Emp {
private Integer eid;
private String ename;
private Car car;
private Dept dept;
public Integer getEid() {
return eid;
}
public void setEid(Integer eid) {
this.eid = eid;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
@Override
public String toString() {
return "Emp{" +
"eid=" + eid +
", ename='" + ename + '\'' +
", car=" + car +
", dept=" + dept +
'}';
}
}
Car.java
package com.zt.ioc.auto;
public class Car {
private Integer cid;
private String cname;
public Integer getCid() {
return cid;
}
public void setCid(Integer cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
@Override
public String toString() {
return "Car{" +
"cid=" + cid +
", cname='" + cname + '\'' +
'}';
}
}
Dept.java
package com.zt.ioc.auto;
public class Dept {
private Integer did;
private String dname;
public Integer getDid() {
return did;
}
public void setDid(Integer did) {
this.did = did;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
@Override
public String toString() {
return "Dept{" +
"did=" + did +
", dname='" + dname + '\'' +
'}';
}
}
auto.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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">
<!-- autowire自动装配
根据某种策略自动为非字面量属性赋值
-->
<!--
byname:bean的id与属性名,一致则能赋值
bytype:spring容器中bean的类型为兼容性的属性赋值。/配置文件中car与dept与Emp中car与dept类型一致就能装配。兼容性:父类与实现的接口可以。
自使用过程中,要求spring容器中只能有一个能为属性赋值的bean
选用建议:这两个都有问题,这个都不用!!!!!!!!!!!!!!!!11。
1。会作用与改bean'中所有的非字面量。所以谁都不用。
-->
<bean id="emp" class="com.zt.ioc.auto.Emp" autowire="byType">
<property name="eid" value="1001"></property>
<property name="ename" value="张三"></property>
<!-- <property name="car" ref="car"></property>-->
<!-- <property name="dept" ref="dept"></property>-->
</bean>
<!-- 下面的bean的id car与Emp类中的属性名car一致则进行byname装配,如果修改了下面的id 名则不能用byname装配,用bytype装配可以
如下面,在相同的中class中设置了两个car1 car2则抛出异常NoUniqueBeanDefinitionException。
-->
<bean id="car1" class="com.zt.ioc.auto.Car">
<property name="cid" value="10001"></property>
<property name="cname" value="霸道"></property>
</bean>
<!-- <bean id="car2" class="com.zt.ioc.auto.Car">-->
<!-- <property name="cid" value="10001"></property>-->
<!-- <property name="cname" value="霸道"></property>-->
<!-- </bean>-->
<bean id="dept" class="com.zt.ioc.auto.Dept">
<property name="did" value="10002"></property>
<property name="dname" value="开发部">
</property>
</bean>
</beans>