让我们说说自动装配吧,分别讲一下三种装配的用法,并写出代码和相应的xml文件
时间: 2023-04-10 19:03:16 浏览: 70
好的,关于自动装配,有三种方式可以实现:
1. byName自动装配:根据bean的名称进行自动装配,需要在xml文件中使用<property name="xxx"/>标签指定属性名。
代码示例:
```
public class Car {
private Engine engine;
// getter/setter
}
public class Engine {
private String type;
// getter/setter
}
```
xml文件示例:
```
<bean id="car" class="com.example.Car" autowire="byName">
<property name="engine"/>
</bean>
<bean id="engine" class="com.example.Engine">
<property name="type" value="V8"/>
</bean>
```
2. byType自动装配:根据属性类型进行自动装配,需要在xml文件中使用<property type="xxx"/>标签指定属性类型。
代码示例:
```
public class Car {
private Engine engine;
// getter/setter
}
public class Engine {
private String type;
// getter/setter
}
```
xml文件示例:
```
<bean id="car" class="com.example.Car" autowire="byType">
<property name="engine"/>
</bean>
<bean id="engine" class="com.example.Engine">
<property name="type" value="V8"/>
</bean>
```
3. constructor自动装配:根据构造函数参数类型进行自动装配,需要在xml文件中使用<constructor-arg type="xxx"/>标签指定构造函数参数类型。
代码示例:
```
public class Car {
private Engine engine;
public Car(Engine engine) {
this.engine = engine;
}
// getter/setter
}
public class Engine {
private String type;
// getter/setter
}
```
xml文件示例:
```
<bean id="car" class="com.example.Car" autowire="constructor">
<constructor-arg name="engine" ref="engine"/>
</bean>
<bean id="engine" class="com.example.Engine">
<property name="type" value="V8"/>
</bean>
```
以上就是三种自动装配的用法,希望能对您有所帮助。
阅读全文