Boa noite galera, to com um probleminha cruel aqui… já tentei de tudo e não sei como resolver… é o seguinte:
Na minha aplicação aqui, nada do que é interface ou classe abstrata o spring consegue injetar… e aí estou tentando injetar o AuthenticationManager do Spring Security e não está dando… da o erro
org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.security.authentication.AuthenticationManager br.com.extremesys.vanaheim.service.AuthenticationService.authenticationManager; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.springframework.security.authentication.AuthenticationManager] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=org.springframework.security.authentication.AuthenticationManager)}
eu percebi que ele não injeta interfaces tb porque eu tinha uma classe X que era um @Component que implementava uma interface Y, e ele não conseguiu fazer isso… eu imaginei que fosse porque interfaces não podem ser instanciadas, mas não sei se é isso porque no exemplo do Spring Security que estou me baseando, da devMedia, eles injetam a interface AuthenticationManager numa boa…
Será que alguém poderia me ajudar??? Desde já agradeço!!
Deve ter coisa errado na sua configuração. A base da DI é o trabalho com interfaces e o Spring faz muito bem esse trabalho.
Veja nesse tutoria Spring MVC ? 100% livre de XML que a interface IUserDao é injetada na classe UserService. E UserService, que não é uma interface, é injetada na classe UserController.
Obrigado por responder, amigo. Pois é, eu já tinha visto outros exemplos como esse… só que aqui na minha aplicação não está dando certo… O erro diz que a classe(abstract/interface) não pode ser injetada… Minhas configurações estão normais, como as que são necessárias… estou mapeando as classes através do component scan no applicationContext. Não faço a mínima ideia do que seja isso, tem alguma sugestão, meu brother?
Pois é, eu estou usando o Maven mesmo… o engraçado é isso. Estou usando, Maven, Spring, JSF, Primefaces e Hibernate. Vou passar um pente fino hoje, quando chegar em casa, mas a priori não pareço ter esquecido de algo.
Poxa, testei de novo e deu a mesma coisa… inclusive se eu tentar fazer um DAO genérico por exemplo, não consigo fazer através de uma interface, porque a classe que implementar esse DAO não poderá ser componentizada pelo Spring por conta disso aí… ta muito estranho isso.