Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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 我可以在Spring中注入接口子类型吗?_Java_Spring - Fatal编程技术网

Java 我可以在Spring中注入接口子类型吗?

Java 我可以在Spring中注入接口子类型吗?,java,spring,Java,Spring,它现在似乎不起作用。我得到一份工作 java.lang.NullPointerException 我有一个实现接口的类 public class LearnerDao implements BaseDao { private BaseDao dao; public void setDao(BaseDao dao) { this.dao=dao; } . . . } 这是我的接线 <bean id="pm" factory-bean="pmf

它现在似乎不起作用。我得到一份工作

java.lang.NullPointerException

我有一个实现接口的类

public class LearnerDao implements BaseDao {
   private BaseDao dao;
   public void setDao(BaseDao dao) {
      this.dao=dao;
   }
   .
   .
   .
}
这是我的接线

<bean id="pm" factory-bean="pmf" factory-method="getPersistenceManager"
      scope="prototype"></bean>

<bean id="learnerDao" class="com.hardwire.dao.impl.LearnerDao">
  <property name="pm" ref="pm"></property>
</bean>

<bean id="twitterUserDao" class="com.hardwire.dao.impl.TwitterUserDao">
  <property name="pm" ref="pm"></property>
</bean>

<bean id="learnerService" class="com.hardwire.service.LearnerService">
      <property name="dao" ref="learnerDao"></property
</bean>
只有learnerDao实现了BaseDao。另一方面,BeanTwitterUserDao没有。我想指出的是,twitterUserDao被注射的很好,但learnerDao没有。
日志显示learnerDao为null。所以我想知道这是否与learnerDao实现一个接口有关

不,你绝对可以这么做。请注意,您正试图在
learnerDao
中设置
pm
属性,但尚未显示设置
dao
属性的任何内容。这就是问题所在吗?

我终于找到了问题所在。在一个依赖learnerService的控制器中,我需要消除以下代码缺陷:

learnerService = new LearnerService();
笑得我屁滚尿流!:)

learnerService = new LearnerService();