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

来源:3-4 Spring Bean装配之自动装配

丶子非鱼

2017-05-22 09:00

这是为毛完全蒙逼了

写回答 关注

2回答

  • 里的希腊
    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抛出异常。


    丶子非鱼

    非常感谢!

    2017-05-22 11:21:01

    共 1 条回复 >

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

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


Spring入门篇

为您带来IOC和AOP的基本概念及用法,为后续高级课程学习打下基础

268785 学习 · 963 问题

查看课程

相似问题