Я настроил приложение Spring с помощью Java-конфигурации. Когда я запускаю свое приложение, я получаю сообщение об ошибке NoSuchBeanDefinitionException: No bean named 'springSecurityFilterChain' is defined
. Я определил все классы конфигурации, но эта ошибка все еще происходит. Как это исправить?Фильтр Spring Security, который не найден, несмотря на то, что он определен в конфигурации Java
Мой главный класс:
public class SiteMain implements WebApplicationInitializer {
private void initSpringMvcServlet(ServletContext container) {
AnnotationConfigWebApplicationContext dispatcherContext = new AnnotationConfigWebApplicationContext();
dispatcherContext.register(MvcConfig.class);
ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(dispatcherContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}
private void initSpringRootContext(ServletContext container) {
XmlWebApplicationContext rootContext = new XmlWebApplicationContext();
rootContext.setConfigLocation("/WEB-INF/site.xml");
container.addListener(new ContextLoaderListener(rootContext));
}
@Override
public void onStartup(ServletContext container) throws ServletException {
initSpringRootContext(container);
initSpringMvcServlet(container);
}
}
My Security Initializer класс:
public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer { }
Мой класс MVC Config является:
@Configuration
@EnableWebMvc
@ComponentScan
@Import(SecurityConfig.class)
public class MvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/").setCachePeriod(31556926);
}
}
My Security Config класс:
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/resources/**").permitAll().anyRequest().authenticated()
.and().formLogin().loginPage("/").permitAll()
.and().logout().permitAll()
.and().rememberMe();
}
}
Что именно находится в вашем классе SecurityWebApplicationInitializer? – NikolaB
А что такое site.xml, что в нем определено? – NikolaB
@NikolaB: Мой 'SecurityWebApplicationInitializer' ничего не содержит. То, что я дал, это все. 'site.xml' содержит некоторые компоненты и менеджер транзакций базы данных. – khateeb