#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" 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 был введен нормально, а learnerDao — нет.
Журналы показывают, что learnerDao имеет значение null. Поэтому мне было интересно, имеет ли это какое-либо отношение к learnerDao, реализующему inteface.
Ответ №1:
Нет, вы определенно можете это сделать. Обратите внимание, что вы пытаетесь установить pm
свойство в learnerDao
, но вы ничего не показали, устанавливая dao
свойство. Может ли это быть проблемой?
Ответ №2:
Я, наконец, нашел, где все идет не так. Мне пришлось устранить эту ошибку в коде в контроллере, который имеет learnerService в качестве зависимости:
learnerService = new LearnerService();
Прямо сейчас я смеюсь до упаду! :))