Problema com referência circular!

1 resposta
boneazul

Olá pessoal estou com uma dúvida aqui em referencia circular tenho dois Daos em meu sistema que 1 usa o outro e vice versa!!

CacheDao e ConfiguracaoSistemaDao

CacheDao é responsavel por acesso a camada de cache (GAE) e ConfiguracaoSistemaDao por acesso as configuracoes do sistema , só que eu queria guardar em configuracoes do sistema se o esquema de cache está ativo ou não !!!

public class ConfiguracaoSistemaDao{
     private CacheDao daoCache;
     public ConfiguracaoSistemaDao(CacheDao daoCache){
          this.daoCache = daoCache;
     }

     public String getConfig(String key){
          //Código utilizando o cache para não ficar indo a banco toda vez pegar o valor de uma configuração
          String value = daoCache.get(key);
          if(value==null) //Executa query e coloca no cache
          return value;
     }
}
public class CacheDao{
     private ConfiguracaoSistemaDao daoConfiguracaoSistema;
     public CacheDao(ConfiguracaoSistemaDao daoConfiguracaoSistema){
          this.daoConfiguracaoSistema = daoConfiguracaoSistema;
     }

     public String get(String key){
         //Aqui preciso de uma variavel que guardaria em configuracoes para ver se o esquema de cache está ativo ou não
         if(configuracao.getConfig("CACHE_ENABLED").equals("S") { 
                return .......;
         }
         return null;
     }
}

Tem como resolver esse problema de referência circular usando DI ?? Pois o Spring fica gerando a exception de circular reference ??? O que realmente acontece na verdade pa um precisa do outro pra instanciar … tenho que instanciar na mão 1 dos lados ??

1 Resposta

Lucas_Cavalcanti

troque em um dos lados a injeção via construtor por injeção via setter que vai funcionar

@Autowired
public void setXXX(XXX xxx) {...}
Criado 6 de julho de 2011
Ultima resposta 6 de jul. de 2011
Respostas 1
Participantes 2