Daquelas coisas malucas que funcionava até ontem (eu juro!) e parou hoje. A única coisa diferente que lembro de ter feito no projeto foi importá-lo em um Eclipse/STS e rodar no Tomcat 8.5 na IDE.
Uso vRaptor 3 com Spring 4.3.13 e mesmo usando interfaces eu recebo o seguinte erro:
org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'AssignmentsExtractionService' is expected to be of type 'com.progols.integration.service.AssignmentsExtractionService' but was actually of type 'com.sun.proxy.$Proxy76'
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:378)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
Já tentei várias artimanhas dos outros posts aqui do fórum, mas nada resolveu, incluindo:
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="false" />
<aop:config proxy-target-class="false" />
Classe do controller onde dá o erro:
import javax.inject.Inject;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.ioc.Component;
@Resource
public class IntegrationController {
@Inject
private AsyncProcessor processor;
@Inject
@javax.annotation.Resource(type = AssignmentsExtractionService.class)
private AsyncService extractionService;
...
}
Classe de implementação do serviço:
import javax.inject.Inject;
import br.com.caelum.vraptor.ioc.Component;
@Component
public class AssignmentsExtractionService implements AsyncService {
@Inject
private ConfigurationDAO dao;
@Inject
private AssignmentsService service;
...
}
Perceba que eu uso a interface pra injetar o serviço, mas uso @Resource (do Java) para diferenciar qual implementação eu quero (existem várias classes que implementam AsyncService).
Valeu!