J'essaie de valider par programme un login/pass utilisateur en utilisant Spring Security, donc j'ai besoin d'avoir accès au ProviderManager
. Je voudrais qu'il soit automatiquement injecté dans mon @Controller
.Spring Security: autowire ProviderManager
Mon code ressemble:
import org.springframework.security.authentication.ProviderManager;
// ...
@Controller
public class MyController {
@Autowired
private ProviderManager authenticationManager;
Mais lorsque je tente de lancer l'application que je reçois ce message d'erreur:
No unique bean of type [org.springframework.security.authentication.ProviderManager] is defined:
expected single matching bean but found 2:
[org.springframework.security.authentication.ProviderManager#0, org.springframework.security.authenticationManager]
Quelle pourrait être la cause ou comment pourrais-je le résoudre? J'utilise Spring Security 3.0.0-RC1 avec Spring 3.0.1, et je n'ai défini aucun bean ProviderManager
. Je l'ai utilisé avec succès:
@Resource
private ProviderManager authenticationManager;
dans d'autres projets, mais javax.annotation.Resource
est pas pris en charge dans GAE.
Merci, je ne connaissais pas l'annotation @Qualifier. Savez-vous si elle est liée d'une manière ou d'une autre avec l'attribut "alias" () qui semble également résoudre le problème? –
@Guido: Oui, votre solution fonctionne presque de la même manière. '@ Qualifier' utilise le nom spécifié pour choisir l'un des beans, lorsque votre solution choisit ce bean car son alias correspond au nom du champ. – axtavt