Spring Security 4-configure(AuthenticationManagerBuilder auth)在没有@Autowired的情况下工作

时间:2019-03-27 15:38:05

标签: java spring

配置Spring Security时:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    DataSource dataSource;
    //@Autowired
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {

运行时,无论是否使用@Autowired,它都可以工作。 如果不是自动装配,那么AuthenticationManagerBuilder来自何处?

2 个答案:

答案 0 :(得分:1)

那里没有“注射”。 “配置”只是采用AuthenticationManagerBuilder对象的方法。

您的SecurityConfig对象实现了WebSecurityConfigurerAdapter,并且由于其上的注释而成为Spring Bean。您还可以通过注释启用安全行为。所有这一切将导致Spring寻找类型为WebSecurityConfigurerAdapter的bean服务于安全性设置。它找到您的bean,因为它是这些对象之一。 Spring知道这种类型的bean应该做什么,因此它只是对该bean调用适当的方法。

由于您已重载WebSecurityConfigurerAdapter的方法之一,因此将调用该方法的版本。

@Autowired仅适用于引用bean的成员变量。

答案 1 :(得分:0)

它被调用者自动注入到方法中。无论如何,@Autowiring在方法参数中没有作用。