Java 在抽象超类中注入依赖项失败
我有像这样的类的层次结构Java 在抽象超类中注入依赖项失败,java,spring,dependency-injection,Java,Spring,Dependency Injection,我有像这样的类的层次结构 public interface IX { public String getSomething(); } public class X implements IX { @Override public String getSomething() { return "something"; } } public abstract class A implements IX { private X x; public X get
public interface IX
{
public String getSomething();
}
public class X implements IX
{
@Override
public String getSomething()
{
return "something";
}
}
public abstract class A implements IX
{
private X x;
public X getX()
{
return x;
}
public void setX(X x)
{
this.x = x;
}
@Override
public String getSomething()
{
return x.getSomething(); **//NullPointerException here ****
}
}
public class BaseB extends A
{
private Y y;
public Y getY()
{
return y;
}
public void setY(Y y)
{
this.y = y;
}
}
public class B extends BaseB
{
public void test()
{
String something = getSomething();
}
}
我的XML中有以下内容
<bean id="x" class="X" />
<bean id="y" class="Y" />
<bean class="A" id="a" abstract="true" >
<property name="x" ref="x" />
</bean>
<bean class="B" id="b" parent="a" >
<property name="y" ref="y" />
</bean>
依赖注入有点问题,X没有被注入,它抛出了一个NPE,正如我在上面的代码中提到的。
我做错了什么?我只是通过一个简单的单元测试
Assert.assertEquals(b.getSomething(),“something”)尝试了这段代码(使用公共类Y实现IX
,以便能够编译)代码>并使用Spring4.0.6
成功通过。您如何使用bean?给我们看一个测试用例。Richardo,Y类没有实现IX,但我想这不会有什么区别。我不明白为什么它对我不起作用。顺便说一句,我正在使用的spring版本是3.0.7Sotirios,我正在为我正在工作的项目复制这个场景,这些是更复杂的类。您可以认为B类是服务类,方法Test-()从客户端调用。在methodtest()内部,我们调用依赖项Y和X上的方法(getSomething()。只有依赖项X是空的,而依赖项Y是正确注入的。