现在似乎不起作用。我得到一个
java.lang.NullPointerException
我有一个实现接口(interface)的类
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>
这是我的 learnerService
public class LearnerService {
private static final Logger log =
Logger.getLogger(LearnerService.class.getName());
private BaseDao dao;
.
.
.
public void insert(Learner learner){
if (dao==null){
log.info("dao is null");
}
else {
log.info("dao is not null");
}
dao.insert(learner);
}
public void setDao(BaseDao dao) {
this.dao = dao;
}
只有learnerDao实现了BaseDao。另一方面,bean twitterUserDao 则不然。我想指出的是 twitterUserDao 被注入(inject)了,但 learnerDao 却没有。 日志显示 learnerDao 为空。所以我想知道这是否与 learnerDao 实现接口(interface)有关。
最佳答案
不,你绝对可以做到。请注意,您尝试在 learnerDao
中设置 pm
属性,但尚未显示任何设置 dao
属性的内容。这会是问题所在吗?
关于java - 我可以在 Spring 中注入(inject)接口(interface)子类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1382740/