스프링 보안을 사용하여 프로그래밍 방식으로 사용자 로그인/패스의 유효성을 검사하려고하므로 ProviderManager
에 액세스해야합니다. 내 @Controller
에 자동으로 주입하고 싶습니다.스프링 보안 : ProviderManager autowire
내 코드는 다음과 같습니다
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]
은 무엇 원인이 될 수 또는 내가 그것을 어떻게 해결할 수 있습니까?
스프링 3.0.1-RC1을 스프링 3.0.1과 함께 사용하고 있으며 ProviderManager
빈을 정의하지 않았습니다. 다른 프로젝트에서
@Resource
private ProviderManager authenticationManager;
,하지만 javax.annotation.Resource
는 GAE에서 지원되지 않습니다 : 내가 성공적으로 사용했습니다.
감사합니다. @Qualifier 주석을 알지 못했습니다. 문제를 해결하는 것처럼 보이는 "별칭"속성 ()과 관련이 있는지 알고 계십니까? –
@Guido : 네 솔루션은 거의 똑같은 방식으로 작동합니다. '@ 한정자 '는 별명이 필드 이름과 일치하기 때문에 솔루션이 해당 빈을 선택할 때 지정된 이름을 사용하여 빈 중 하나를 선택합니다. – axtavt