Как я могу удалить эту ошибку циклической зависимости из этого старого приложения Springboot, которое я обновляю?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу удалить эту ошибку циклической зависимости из этого старого приложения Springboot, которое я обновляю?

Сообщение Anonymous »

Я просмотрел другие подобные вопросы на StackOverflow и не нашел подходящих ответов. Я обновляю старое загрузочное приложение Spring, которое работало нормально, однако при обновлении до версии 2.7.18 появилось сообщение о циклических зависимостях.
Исходный код можно найти на Github здесь:
https://github.com/SabreDevStudio/SACS- ... /README.md
Мне удалось исправить одну, однако я застрял на более сложной циклической зависимости от A -> B -> C до A. Вот три фрагмента кода, вызывающие циклическую зависимость:

Код: Выделить всё

@Service
public class SessionPool {
https://github.com/SabreDevStudio/SACS- ... essionPool .java

Код: Выделить всё

@Controller
@Scope("prototype")
public class SessionCreateWrapper extends WebServiceGatewaySupport {
https://github.com/SabreDevStudio/SACS- ... ateWrapper .java

Код: Выделить всё

@Component
@Scope("prototype")
public class SessionCreateInterceptor extends AbstractSessionInterceptor {
https://github.com/SabreDevStudio/SACS- ... nterceptor .java
Я попытался создать интерфейс менеджера сеансов, чтобы разделить зависимости

Код: Выделить всё

public interface SessionManager {
void addToPool(Security session);
Security getFromPool(SharedContext context);
}
Реализация интерфейса SessionManager в SessionPool
Так что SessionCreateWrapper зависит от SessionManager
SessionCreateInterceptor реализует SessionManager

Код: Выделить всё

But then I get this error:
    Parameter 0 of constructor in com.sabre.api.sacs.soap.session.SessionCreateWrapper required a single bean, but 2 were found:
- sessionCreateInterceptor: defined in file [C:\CODE\SACS-Java\soap\target\classes\com\sabre\api\sacs\soap\interceptor\SessionCreateInterceptor.class]
- sessionPool: defined in file [C:\CODE\SACS-Java\soap\target\classes\com\sabre\api\sacs\soap\pool\SessionPool.class]
Я также пробовал использовать внедрение установщика, но это просто меняет циклическую зависимость. Ошибка:

Код: Выделить всё

  workflowTrigger (field private com.sabre.api.sacs.soap.pool.SessionPool com.sabre.api.sacs.flowtrigger.WorkflowTrigger.sessionPool)
┌─────┐
|  sessionPool
└─────┘
Конечно, код работает, если я использую Spring.main.allow-circular-references=true, но я не хочу использовать его, как советуют. Пожалуйста, помогите!

Подробнее здесь: https://stackoverflow.com/questions/783 ... ot-applica
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»