Я пытаюсь программно проверить логин/пароль пользователя с использованием Spring Security, поэтому мне нужно иметь доступ к ProviderManager
. Я бы хотел, чтобы он автоматически вводился в мой @Controller
.Spring Security: autowire ProviderManager
Мой код выглядит следующим образом:
import org.springframework.security.authentication.ProviderManager;
// ...
@Controller
public class MyController {
@Autowired
private ProviderManager authenticationManager;
Но когда я пытаюсь запустить приложение, я получаю сообщение об ошибке:
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]
Что может быть причиной или как я мог бы решить эту проблему?
Я использую Spring Security 3.0.0-RC1 с Spring 3.0.1, и я не определил какой-либо ProviderManager
bean. Я успешно использовал:
@Resource
private ProviderManager authenticationManager;
в других проектах, но javax.annotation.Resource
не поддерживается в GAE.
Спасибо, я не знал аннотацию @Qualifier. Знаете ли вы, связано ли это с атрибутом «alias» (), который, похоже, также решает проблему? –
@Guido: Да, ваше решение работает почти так же. '@ Qualifier' использует указанное имя для выбора одного из компонентов, когда ваше решение выбирает этот компонент, потому что его псевдоним соответствует имени поля. – axtavt