配置Spring Security时:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
DataSource dataSource;
//@Autowired
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
运行时,无论是否使用@Autowired,它都可以工作。 如果不是自动装配,那么AuthenticationManagerBuilder来自何处?
答案 0 :(得分:1)
那里没有“注射”。 “配置”只是采用AuthenticationManagerBuilder对象的方法。
您的SecurityConfig对象实现了WebSecurityConfigurerAdapter,并且由于其上的注释而成为Spring Bean。您还可以通过注释启用安全行为。所有这一切将导致Spring寻找类型为WebSecurityConfigurerAdapter的bean服务于安全性设置。它找到您的bean,因为它是这些对象之一。 Spring知道这种类型的bean应该做什么,因此它只是对该bean调用适当的方法。
由于您已重载WebSecurityConfigurerAdapter的方法之一,因此将调用该方法的版本。
@Autowired仅适用于引用bean的成员变量。
答案 1 :(得分:0)
它被调用者自动注入到方法中。无论如何,@Autowiring
在方法参数中没有作用。