为什么它在注入时起作用;org.springframework.security.crypto.password.PasswordEncoder“;至;DaoAuthenticationProvider";?

为什么它在注入时起作用;org.springframework.security.crypto.password.PasswordEncoder“;至;DaoAuthenticationProvider";?,spring,spring-security,Spring,Spring Security,在“DaoAuthenticationProvider”中,“passwordEncoder”字段是“org.springframework.security.authentication.encoding.passwordEncoder” . 但是,当“org.springframework.security.crypto.password.PasswordEncoder”的实例被注入时,它为什么会工作?DaoAuthenticationProvider.setPasswordEncoder采

“DaoAuthenticationProvider”
中,
“passwordEncoder”
字段是
“org.springframework.security.authentication.encoding.passwordEncoder”

. 但是,当“org.springframework.security.crypto.password.PasswordEncoder”的实例被注入时,它为什么会工作?

DaoAuthenticationProvider.setPasswordEncoder采用对象参数类型

在代码中,它运行instanceof检查org.springframework.security.crypto.password.PasswordEncoder,并将参数包装在org.springframework.security.authentication.encoding.PasswordEncoder的代理实现中