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

时间:2018-02-13 08:31:16

标签: spring spring-boot spring-security annotations

我有一些关于Spring依赖注入和事务管理的经验,但我是Spring安全新手。当我阅读与春季安全相关的article时,我发现在示例中使用了@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");
  }

}

谢谢

1 个答案:

答案 0 :(得分:2)

在Spring托管类中定义Bean并非强制要求。

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

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