zoukankan      html  css  js  c++  java
  • Spring bean的自动装配属性

    bean的自动装配属性能简化xml文件配置.

    bean 的自动装配属性分为四种:

    1.byName 

    2.byTyoe

    3.constructor

    4. autodetect

    byName:

    它查找配置文件中的的bean的id 或者name 和本bean中的成员属性名相同的bean 自动装配 所以不用再给本bean添加peoperty标签 

    例:有两个类

    public Class  Person{

    }

    public Class Customer{

      private Person p;

      public setPerson(Person ps){

        this.p=ps;

      }

    }

    传统的xml配置为

    <bean id="p" class="com.***.Person "/ >

    <bean id="customer" class="com.***.Customer" >

    <property name="p" ref="p"></property>   //将(ref)p实例化到bean的(name)p属性,达到方法中setPerson的目的

    </bean>

    byName的自动装配方法为

    <bean id="p" class="com.***.Person "/ >

    <bean id="customer" class="com.***.Customer"  autowrite="byName"/> //因为id=p的类的实例化名正好和com.***.Customer类的属性 P的成员变量名相同 所以被自动装配到 customer这个bean里面

    byType:

    方法同上:只不过他搜索的是成员的类型和配置文件中的某个bean的类型相同 则自动装配 ,但是要注意一点:如果出现多个相同类型的bean将抛出异常,处理方法为。设置不需要载入的bean 的属性 primary="false"(取消首选) 或 autowriter-candidate="false"(排除)

    constructor:
    试图在容器中寻找与需要自动装配的bean的构造函数参数一致的一个或多个bean,如果没找到则抛出异常

    autodetect:
    首先尝试使用constructor来自动装配,然后再使用byType方式。

    默认自动装配设置 :

    如果想要为它所创建的所有bean应用相同的自动装配策略来简化配置是 可以在根元素<beans> 上增加 default-autowire属性

    <beans default-autowire="byName"> ...................</beans>

  • 相关阅读:
    Prometheus 简介
    Cassandra spring data 试用
    nginx fastcgi 优化
    mysql 用户管理
    js之iframe子页面与父页面通信
    ORACLE中SID和SERVICE_NAME的区别
    报“ Got minus one from a read call”的错误
    linux下重启oracle服务:监听器和实例
    25种提高网页加载速度的方法和技巧
    如何让你的网页加载时间降低到 1s 内
  • 原文地址:https://www.cnblogs.com/laobiao/p/5447944.html
Copyright © 2011-2022 走看看