Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在抽象超类中注入依赖项失败_Java_Spring_Dependency Injection - Fatal编程技术网

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是正确注入的。