问答详情
源自:3-4 Spring Bean装配之自动装配

在用 default-autowire的时候值为byname和bytype时 不能添加构造方法 在用constractor时可以用set方法 坑啊 这是为什么

这是为毛完全蒙逼了

提问者:丶子非鱼 2017-05-22 09:00

个回答

  • 里的希腊
    2017-05-22 11:04:55
    已采纳

    构造方法就是用constractor自动装配   

    byname和bytype只是装配类型不同 不能用于构造方法

    以下来自百度

    byName 根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自
    动装配。例如,在bean定义中将 autowire设置为by name,而该bean包含master属性(同时提供
    setMaster(..)方法),Spring就会查找名为master的bean定义,并用它来装配给master属性。


    byType 如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配。如果存在多个该类型的
    bean,那么将会抛出异常,并指出不能使用byType方式进行自动装配。若没有找到相匹配的bean,
    则什么事都不发生,属性也不会被设置。如果你不希望这样,那么可以通过设置 
    dependency-check="objects"让Spring抛出异常。


  • 黑店老板
    2018-08-19 17:32:54

    在用 default-autowire的时候值为byname和bytype时  不是不能添加构造方法,你应该是没有添加无参的构造方法,所以才报错的。当你添加了有参的构造方法的时候,系统就不会为你添加默认的无参的构造方法了。而byName和byType的时候是需要无参构造方法的。