zoukankan      html  css  js  c++  java
  • spring中autowire的用法

    Autowire模式就是在spring的声明文件里用作进行对象间的关联关系自动绑定的,就是在spring beanfactory内的一个bean对其bean的引用可以自动进行,而不一定用ref=的方式显式声明。在reference的3.3.6节有详细的介绍,autowire主要有5种模式:

    1 no

    不使用Autowire,引用关系显示声明,spring的reference也建议不用autoware,因为这会破坏模块关系的可读性,原文如下:

    Note: as has already been mentioned, for larger applications, it is discouraged to use autowiring because it
    removes the transparency and the structure from your collaborating classes.

    2 byName

    用名称关联,如果指定了这种模式,如

       <bean id="userManagerTarget" class="com.mdcchina.jianghu.logic.UserManager" autowire="byName">
           <property name="baseDAO"/>
       </bean>

    这样对于bean userManagerTarget的属性baseDAO,spring就会自动去引用同名的bean,也就是上面的声明和下面是等价的:

       <bean id="userManagerTarget" class="com.mdcchina.jianghu.logic.UserManager" autowire="no">
           <property name="baseDAO">
              <ref local="baseDAO"/>
           </property>
       </bean>

    3 byType

    和前面的byName类似的,就是这个属性会在整个beanFactory定义里找和这个属性一样的bean自动关联上,如果有2个或更多这个类型的bean在beanFactory的定义里,就直接抛异常了,如果没有,就什么都不发生,这个属性就是null,所以这个只适用与这个属性的类型有且只有一个同类的bean在spring里定义

    4 constructor

    这个的意思我没有确定的把握,不过感觉用途也不会大,好像是用构造函数新建一个属性类型的bean并关联上,reference原文是:

    This is analogous to byType, but applies to constructor arguments. If there isn't exactly one
    bean of the constructor argument type in the bean factory, a fatal error is raised.

    5 autodetect

    这个的意思好像是说自动决定用byType还是constructor方式,原文如下:

    Chooses constructor or byType through introspection of the bean class. If a default
    constructor is found, byType gets applied.

    综上所述,感觉上只有byName比较实用一些,但是spring的reference还是不推荐在定义中用这个功能

  • 相关阅读:
    ES6(严格模式,let&const,箭头函数,解构赋值,字符串扩展方法,Symbol,Set和Map,生成器函数)
    动画实现-微信语音小喇叭样式
    JS与React分别实现倒计时(天时分秒)
    MacOS下如何设置hosts?
    原生JS实现‘点击元素切换背景及字体等’
    mysql数据库设计规范
    如何对 ElasticSearch 集群进行压力测试
    设计实现SAM--无服务器应用模型
    韩立刚计算机网络笔记-第11章 因特网上的音频视频-无线网络
    韩立刚计算机网络笔记-第10章 网络安全
  • 原文地址:https://www.cnblogs.com/caoyc/p/5622907.html
Copyright © 2011-2022 走看看