问题描述
现有几个类关系如下classA{}classAAextendsA{}classABextendsA{}classAAAextendsAA{}classABAextendsAB{}classFather{publicvoidsetValue(AAaa){}}classSonextendsFather{publicvoidsetValue(Aa){}}
<beanid="son"class="Son"><propertyname="value"ref="aaa"/></bean>
这种情况下会走父类的setValue方法我在子类里面已经重新定义了setValue方法虽然不算重写但是AA是继承A的我的bean是子类他为什么还是会走父类的setValue方法呢如果我注入的属性是AA的派生类就会跑到父类的set方法如果是AB的派生类才会走子类的setValue(Aa)方法我想让他都走子类的set方法而且Spring这注入让人不懂求解
解决方案
解决方案二:
感觉是Spring跑去父类里面找同名的方法,找到类型范围更适合注入那个属性的因为A跟AAA隔了两层而AA跟AAA隔一层是不是这样呢若Father还有一个父类有setValue(AAAaaa)方法注入的是AAA他就会跑到这个set方法里面注入了吧
解决方案三:
现在好像连传AB都不进子类set方法了直接报错了走的都是父类
时间: 2024-10-06 13:28:35