Meu problema é o seguinte,
Possuo a base de dados do sistema, e uma legada, em determinadas situações vou precisar utilizar um DAO que utiliza query’s no owner legado.
Porém somente 1 controller recebe este comportamento, o restante se mantém da mesma forma.
Para isso criei uma interface, onde meus dois DAO’s a implementam, retirei o @Component deles e criei uma Factory
meu Controller recebe no construtor a interface, no restante dos controllers mantive diretamente a referência à implementação do DAO, criando uma Factory para a implementação do DAO diretamente.
mas ele reclama!!
org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.cocento.erp.acs.dao.legado.LegacyBeneficiario] is defined: expected single matching bean but found 2: [com.cocento.erp.acs.infra.dao.factories.BeneficiarioDAOFactory, com.cocento.erp.acs.infra.dao.factories.LegacyBeneficiarioDAOFactory]
@Component
public class LegacyBeneficiarioDAOFactory implements ComponentFactory<LegacyBeneficiario> {
private final Session session;
private final AppConfig appConfig;
private final EntityCopier entityCopier;
public LegacyBeneficiarioDAOFactory(Session session, AppConfig appConfig, EntityCopier entityCopier) {
this.session = session;
this.appConfig = appConfig;
this.entityCopier = entityCopier;
}
public LegacyBeneficiario getInstance() {
LegacyBeneficiario legacy = null;
if (appConfig.usarBeneficiarioDAOLegado()) {
legacy = new BeneficiarioLegadoDAO(session);
} else {
legacy = new BeneficiarioDAO(session, entityCopier);
}
return legacy;
}
}
@Component
public class BeneficiarioDAOFactory implements ComponentFactory<BeneficiarioDAO> {
private final Session session;
private final EntityCopier copier;
public BeneficiarioDAOFactory(Session session, EntityCopier copier) {
this.session = session;
this.copier = copier;
}
public BeneficiarioDAO getInstance() {
return new BeneficiarioDAO(session, copier);
}
}
não consigo simular esse comportamento? terei que receber a interface em todos os controllers e fazer a injeção dependendo do controller e parâmetro? 