Почему Spring бросил круговую зависимость, когда я пропустил реализацию интерфейса? - PullRequest
0 голосов
/ 30 мая 2019

У меня следующий вопрос

У меня есть следующий интерфейс

public interface EscalationComponentDao {

    public EscalationComponent insertNewEscalationComponent(Escalation escalation, String componentName);
}

и следующая реализация

@Repository
public class EscalationComponentDaoImpl {
 // code skipped for brevity
}

Затем класс BaseDaoImpl, реализующий интерфейс, в котором я расширил класс EscalationComponentDao

public interface BaseDao extends  EscalationComponentDao

и

@Repository
public class BaseDaoImpl implements BaseDao {

В BaseDaoImpl I автопроводка EscalationComponentDao

    @Autowired
    public EscalationComponentDao escalationComponentDao;   

и в своем классе обслуживания я автоматически подключил BaseDao

@Autowired
public BaseDao basedao;

Но, как вы видите выше, я забыл написать EscalationComponentDaoImpl "реализует EscalationComponentDao".

С отсутствующим пропуском, когда я запустил сборку maven, произошел сбой со следующей циклической ошибкой зависимости от baseDao.

---- Бин с именем "baseDaoImpl" был добавлен в другие бины в его сырой версии как часть циклической ссылки.

После того, как я добавил «внедряет EscalationComponentDao» в EscalationComponentDaoImpl, проблема исчезла.

@Repository
public class EscalationComponentDaoImpl implements EscalationComponentDao{
 // code skipped for brevity
}

У меня вопрос - почему Spring вызывал ошибку циклической зависимости, когда реальная проблема заключалась в том, что я не реализовал интерфейс?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...