Prezados, estou tendo problemas com dependencia circular no Weld num projetinho pessoal que estou fazendo juntamente com o projeto da aula.
As classes que não são Managed Beans e que são injetadas, como por exemplo UsuarioJpaController, não estão anotadas com nenhum contexto do CDI, possuindo portanto o escopo @Dependent, que é um pseudo escopo do CDI. Um objeto desta classe é injetado em meu projeto pessoal numa classe CriptografiaSenha, que é um managed bean, agora gerenciado pelo CDI pela anotação @Named. Este bean gerenciado não está com qualquer anotação de contexto, assim como a classe UsuarioJpaController também não.
Nestes casos de dependencia circular, pelo que eu entendi, ao menos uma das classes deve ter um normal scope, como @ResquestScope, @SessionScope, etc, podendo neste caso uma delas não estar marcada com nenhum escopo, sendo que neste caso o CDI entenderia que a classe não anotada tem o pseudo scope @Dependent por default?
Neste cenário descrito acima, obtenho o erro abaixo:
org.jboss.weld.exceptions.DeploymentException: WELD-001443: Pseudo scoped bean has circular dependencies. Dependency path:
- Managed Bean [class DAO.UsuarioJpaController] with qualifiers [@Any @Default],
- [BackedAnnotatedField] @Inject private DAO.UsuarioJpaController.criptografar,
- Managed Bean [class Default.CriptografiaSenha] with qualifiers [@Any @Default],
- [BackedAnnotatedField] @Inject private Default.CriptografiaSenha.usuarioDAO,
- Managed Bean [class DAO.UsuarioJpaController] with qualifiers [@Any @Default]
at org.jboss.weld.bootstrap.Validator.reallyValidatePseudoScopedBean(Validator.java:924)
at org.jboss.weld.bootstrap.Validator.validatePseudoScopedInjectionPoint(Validator.java:971)
at org.jboss.weld.bootstrap.Validator.reallyValidatePseudoScopedBean(Validator.java:933)
at org.jboss.weld.bootstrap.Validator.validatePseudoScopedInjectionPoint(Validator.java:971)
at org.jboss.weld.bootstrap.Validator.reallyValidatePseudoScopedBean(Validator.java:933)
at org.jboss.weld.bootstrap.Validator.validatePseudoScopedBean(Validator.java:910)
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:141)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:158)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:501)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:61)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:59)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:62)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:55)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)