11、Spring-XML-自动装配
2019-09-18 本文已影响0人
唯老
一、概要
通过bean标签上autowire属性;或者在beans标签上通过default-autowire属性实现自动装配
二、可选值
可选值 | 说明 |
---|---|
no | 不使用自动装配。Bean的引用必须通过ref元素定义。 |
byName | 根据属性名自动装配。BeanFactory查找容器中的全部Bean,找出其中id属性与属性同名的Bean来完成注入。如果没有找到匹配的Bean实例,则Spring不会进行任何注入 |
byType | 如果BeanFactory中正好有一个同属性类型一样的bean,就自动装配这个属性。如果有多于一个这样的bean,就抛出一个致命异常,它指出你可能不能对那个bean使用byType的自动装配。如果没有匹配的bean,则什么都不会发生,属性不会被设置。如果这是你不想要的情况(什么都不发生),通过设置dependency-check="objects"属性值来指定在这种情况下应该抛出错误。 |
constructor | 这个同byType类似,不过是应用于构造函数的参数。如果在BeanFactory中不是恰好有一个bean与构造函数参数相同类型,则一个致命的错误会产生。 |
三 栗子
java对象
public class Application {
private User user;
public Application(User user) {
this.user = user;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
public class User implements Serializable {
private String id;
private String name;
private String sex;
private Integer age;
public void destroy() {
System.out.println("销毁!");
}
public void init() {
System.out.println("初始化!");
}
根据属性名来加载
<!-- xml配置 -->
<bean id="application" class="com.wener.example.bean.Application" autowire="byName"/>
<bean id="user" class="com.wener.example.bean.User" />
根据类型来加载
<!-- 注意:当一个Bean即使用自动装配依赖,又使用ref显示依赖时,则显示指定的依赖就会覆盖自动装配 -->
<bean id="user" class="com.wener.example.bean.User" />
<!-- XML代码 -->
<bean id="app" class="com.wener.example.bean.Application" autowire="byType"/>
根据构造方法来加载
// java代码
public Application(User user) {
this.user = user;
}
// XML配置
<bean id="app" class="com.wener.example.bean.Application" autowire="constructor">
</bean>