我有一些关于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");
}
}
谢谢
答案 0 :(得分:2)
在Spring托管类中定义Bean
并非强制要求。
在这种情况下,@Configuration
(包装@Component
)用于向Spring指示应该实例化此类,并且应该注入所有它的依赖项 - 在这种情况下是DataSource
和AuthenticationManagerBuilder
。这是控制反转原理的一个例子。
Spring还提供了这些ConfigurerAdapter挂钩点,您可以在其中调整已实例化组件的默认配置。 这正是您的Configuration类中发生的事情。