Согласно @ Документация по конфигурации :
Указывает, что класс объявляет один или несколько методов @Bean и может обрабатываться контейнером Spring для генерировать определения bean-компонентов и запросы на обслуживание для этих bean-компонентов во время выполнения, например:
@Configuration
public class AppConfig {
@Bean
public MyBean myBean() {
//instantiate, configure and return bean ...
}
}
Как я всегда помню, я сталкивался с классами, расширяющими WebSecurityConfigurerAdapter
, которые не содержали никаких методов @Bean
и были помечены @Configuration
. Это даже в официальном блоге и некоторых примерах, см .: https://spring.io/blog/2013/07/03/spring-security-java-config-preview-web-security
@Configuration
@EnableWebSecurity
public class HelloWebSecurityConfiguration
extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}
или здесь: https://docs.spring.io/spring-security/site/docs/current/reference/html/jc.html
@Order(1) 2
public static class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/api/**") 3
.authorizeRequests(authorizeRequests ->
authorizeRequests
.anyRequest().hasRole("ADMIN")
)
.httpBasic(withDefaults());
}
}
Почему эти классы отмечены @Configuration
, хотя @Bean
методов нет?