Spring Security se puede usar sin ningún XML, configurando en una clase Java todo. Te pongo un ejemplo:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{
@Autowired
private DataSource dataSource;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/login**").access("permitAll")
.antMatchers("/resources/**").access("permitAll")
.antMatchers("/admin**").access("hasAnyRole('ROLE_ADMIN','ROLE_MANAGER')")
.antMatchers("/inicio**").access("hasAnyRole('ROLE_USER','ROLE_ADMIN','ROLE_MANAGER')")
.and()
.formLogin()
.loginPage("/login")
.failureUrl("/login?login_error=1")
.and()
.csrf()
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout")) //Si se usa CSRF
.deleteCookies("JSESSIONID", "remember-me")
.logoutSuccessUrl("/login")
.and()
.rememberMe()
.rememberMeServices(rememberMeServices())
.key("control_horas");
}
}
Yo tengo proyectos desarrollados con Spring Security sin ningún XML, todo anotaciones.