Por que o proxy não é usado para autowire
Não consigo encontrar qualquer razão para que cada bean autowired não seja autowired por proxy. Eu sei disso porque@Transactional
as anotações não funcionam e eu verifiquei o componente autowired durante a depuração no eclipse. É claro que todo componente implementa alguma interface e eu uso@Autowired
anotações em relação à interface. Eu tenho apenas uma configuração de aop:
<tx:annotation-driven transaction-manager="transactionManager" />
Eu uso o JPA com hibernate, spring-mvc, springflowsflow, spring-security e spring-data. Interfaces que se estendemorg.springframework.data.repository.CrudRepository
são autowired por proxy. Mas meus componentes não são. Por exemplo eu tenho classeMyClass
que implementamMyInterface
:
@Service
public class MyClass implements MyInterface {
@Autowired
MyCrudReposiotry reposiotry;
....
}
Se eu autowire MyInterface em algum lugar:
@Autowired
MyInterface mi;
entãomi
é apenas referência aMyClass
objeto, repositório é refrence para proxyorg.springframework.aop.framework.JdkDynamicAopProxy
. Muito interessante é que nos testesmi
é referência ao proxy. O contexto do meu teste não contém configuração de fluxo da web e mvc.
Talvez haja alguma configuração indireta que eu deveria verificar. O que pode desativar a autowiring por proxy?