美文网首页
11、Spring-XML-自动装配

11、Spring-XML-自动装配

作者: 唯老 | 来源:发表于2019-09-18 00:15 被阅读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>
    

    相关文章

      网友评论

          本文标题:11、Spring-XML-自动装配

          本文链接:https://www.haomeiwen.com/subject/lftzyctx.html