다음 BeanPostProcessor 구현이 포함 된 Spring 3.0 애플리케이션을 이해하려고합니다. 이 코드는 무엇을 위해 필요합니까? UserDetailsService가 사용자 계정 정보를 가져오고 설정하는 데 충분하다고 생각했습니다.이 Spring 3.0 인증 예제에서 UserDetailsService 외에이 BeanPostProcessor가 필요한 이유는 무엇입니까?
@Service
public class UserPassAuthFilterBeanPostProcessor implements BeanPostProcessor
{
/**
* The username parameter.
*/
private String usernameParameter;
/**
* The password parameter.
*/
private String passwordParameter;
@Override
public final Object postProcessAfterInitialization(final Object bean, final String beanName)
{
return bean;
}
@Override
public final Object postProcessBeforeInitialization(final Object bean, final String beanName)
{
if (bean instanceof UsernamePasswordAuthenticationFilter)
{
final UsernamePasswordAuthenticationFilter filter = (UsernamePasswordAuthenticationFilter) bean;
filter.setUsernameParameter(getUsernameParameter());
filter.setPasswordParameter(getPasswordParameter());
}
return bean;
}
/**
* Sets the username parameter.
*
* @param usernameParameter
* the username parameter
*/
public final void setUsernameParameter(final String usernameParameter)
{
this.usernameParameter = usernameParameter;
}
/**
* Gets the username parameter.
*
* @return the username parameter
*/
public final String getUsernameParameter()
{
return usernameParameter;
}
/**
* Sets the password parameter.
*
* @param passwordParameter
* the password parameter
*/
public final void setPasswordParameter(final String passwordParameter)
{
this.passwordParameter = passwordParameter;
}
/**
* Gets the password parameter.
*
* @return the password parameter
*/
public final String getPasswordParameter()
{
return passwordParameter;
}
}
죄송합니다. 바보 같은 질문이지만 매개 변수 이름이 변경되는 것을 어떻게 알 수 있습니까? –
@pnut : UsernamePasswordAuthenticationFilter (http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/web/authentication/UsernamePasswordAuthenticationFilter.html)의 설명서에서 속성 그 중 하나는이 포스트 프로세서에 의해 인스턴스화 된 후에 변경됩니다. – axtavt