我正在实现AuthenticationFailureHandler,并将其添加到过滤器中。哪种方法更好,有什么区别?
public AuthenticationFilter authenticationFilter() throws Exception{
final AuthenticationFilter authenticationFilter = new AuthenticationFilter(authenticationManager());
authenticationFilter.setFilterProcessesUrl("/login");
authenticationFilter.setAuthenticationFailureHandler(new FailureHandler());
return authenticationFilter ;
}
vs
public AuthenticationFilter authenticationFilter() throws Exception{
final AuthenticationFilter authenticationFilter = new AuthenticationFilter(authenticationManager());
authenticationFilter.setFilterProcessesUrl("/login");
authenticationFilter.setAuthenticationFailureHandler(customAuthenticationFailureHandler());
return authenticationFilter ;
}
@Bean
public AuthenticationFailureHandler customAuthenticationFailureHandler() {
return new FailureHandler();
}
我看到他们使用Bean进行配置的配置,但是我不明白为什么。
答案 0 :(得分:1)
两种方式都在做同样的事情。唯一的区别是,在第二个实例中,您将这个FailureHandler声明为bean,并且如果需要(不推荐),则可以通过@autowired在spring管理的任何bean中获取它。
我更喜欢第一个,因为您可以确保FailureHandler仅在您声明的AuthenticationFilter上。
第二个用于不需要显式声明AuthenticationFilter的情况,而您将使用spring预先配置的一个。