没有bean定义的Spring @configure注解用法

Nis*_*age 5 spring annotations spring-security spring-boot

我对 Spring 依赖注入和事务管理有一些经验,但我对 Spring 安全性很陌生。当我阅读一篇与spring security相关的文章@Configuration时,我发现示例中使用了注解,但没有找到bean定义。

根据我的理解,@Configuration注释用于包含 bean 定义的类中。我需要知道@Configuration这个例子中的注释是做什么的。

@Configuration
public class ApplicationSecurity extends WebSecurityConfigurerAdapter {

  @Autowired
  DataSource dataSource;

   ... // web stuff here

  @Override
  public configure(AuthenticationManagerBuilder builder) {
    builder.jdbcAuthentication().dataSource(dataSource).withUser("dave")
      .password("secret").roles("USER");
  }

}
Run Code Online (Sandbox Code Playgroud)

谢谢

hov*_*yan 5

Spring 托管类中并不强制有Bean定义。

在这种情况下@Configuration(包裹@Component)用于向 Spring 指示该类应该被实例化并且所有它的依赖项都应该被注入 - 在这种情况下是DataSourceAuthenticationManagerBuilder。这是控制反转原理的一个例子。

Spring 还提供了这些ConfigurerAdapter 挂钩点,您可以在其中调整已实例化组件的默认配置。这正是您的 Configuration 类中发生的情况。