внедрение зависимостей с условием (перекрестные зависимости)

Есть проект, где используются CDI бины с областью видимости - сессия. Во время инициализации (и работы) одного из бинов должны выполняться функции другого бина. Но это "другой бин" так же использует данные первого бина. Т.е. происходит ситуация с перекрестным вызовом из одного бина другого бина и наоборот (бесконечный цикл).

 @Named
    @SessionScoped
    public class A implements Serializable{
    
    @Inject
    private B b;
    
    public String testS = "test";
 
     @PostConstruct
        private void init(){
         b.f1();  
        } 
    }    
    
    @Named
    @SessionScoped
    public class B implements Serializable{
    
    @Inject
    private A a;
    
     public void f1(){
      System.out.println(a.testS);
     }
    } 

Я так понял, что ситуация такая т.к. процедура инициализации класса А не завершается и его сессионный экземпляр так и не успевает быть созданным. Как можно завершить процедуру инициализации класса А и выполнить b.f1() сразу после? Или есть ли какие то еще варианты как можно "обойти" возникающую ошибку?


Ответы (0 шт):