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>
上一篇 下一篇

猜你喜欢

热点阅读