У меня есть пример веб-приложения, которое я использую в качестве образца для преобразования существующего сервлета . 2.4. приложение для перехода от XML-конфигурации безопасности к новому стилю на основе Java. описанных здесь. Spring Security Java Config PreviewWebSecurityConfigurerAdapter добавить в корневой контекст в контейнере не Servlet 3.0
Моя конфигурация безопасности выглядит следующим образом:
@Configuration
@EnableWebSecurity
@Slf4j
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
public WebSecurityConfig() {
log.info("init");
}
@Override
protected void registerAuthentication(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/resources/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeUrls()
.antMatchers("/","/home").permitAll()
.antMatchers("/secure/**").hasRole("USER")
.anyRequest().authenticated()
.and()
.formLogin()
.loginUrl("/login")
.permitAll();
}
}
Проблема в том, что документация/примеры основаны на сервлет 3.0 спецификации, которые не используют web.xml
документация использует AbstractAnnotationConfigDispatcherServletInitializer но I не может использовать это в сервлете 2.4 контейнера.
Я самонастройка моего приложения MVC с помощью web.xml так:
<servlet>
<servlet-name>my-spike</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</init-param>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.example.config.WebMvcConfig</param-value>
</init-param>
</servlet>
Таким образом, вопрос в том, как добавить мой WebSecurityConfig к контексту приложения корня в web.xml, или в Java коде?