spring boot 2.1.3 и далее выдает циклическую ссылку

#spring #spring-boot

#весна #spring-boot

Вопрос:

 public abstract class CommonBillService implements BillService {

    @Autowired
    @Qualifier("onlineProfitServiceImpl")
    private ProfitService profitService;
....
}

@Service
public class OnlineProfitServiceImpl implements ProfitService { 

    @Autowired
    @Qualifier("aBillServiceImpl")
    private BillService aBillService;
}

@Service
public class ABillServiceImpl extends CommonBillService implements Move {
....//inject other services or dao here with @Autowired,
//there is no OnlineProfitService here explicitly, but its parent CommonBillService inject OnlineProfitService by autowired
}
  

этот код работает при загрузке spring 2.1.2 , но сбой при circular reference 2.1.3 :

 Error creating bean with name 'aBillServiceImpl': 
Bean with name 'aBillServiceImpl' has been injected into other beans [onlineProfitServiceImpl] 
in its raw version as part of a circular reference, but has eventually been wrapped. 
This means that said other beans do not use the final version of the bean. 
  

но в моем коде нет инъекции конструктора, я просто использую @Autowired для инъекции, так что выбросить невозможно circular reference , верно?

Комментарии:

1. Не могли бы вы добавить aBillServiceImpl определение компонента? Кроме того, если этого инициализированного объекта класса здесь нет, также укажите объявление класса.

2. Это явно циклическая ссылка. Spring Boot 2.1.3 может иметь изменение для обнаружения такой ошибки и выдачи.

3. Вы можете исправить это, проанализировав и извлекая код в новую службу / компонент

4. @SachithDickwella aBillServiceImpl внедряет другой сервис или dao by @Autowired , но OnlineProfitServiceImpl в нем явно нет, но в его родительском классе CommonBillService

5. @gtiwari333 да, я могу это исправить, как вы и сказали. spring может обрабатывать циклическую ссылку, если инъекция не является инъекцией конструктора, не вызывая ошибки, верно? но в моем случае нет инъекции конструктора, и он выдает ошибку циклической ссылки, значит ли это, что spring также не может циклически ссылаться на установщик / автозапускную инъекцию из 2.1.3?