Creando múltiples secciones HTTP en Spring Security Java Config

Usando la configuración XML de Spring Security, puede definir múltiples elementos HTTP para especificar diferentes reglas de acceso para diferentes partes de su aplicación. El ejemplo dado en8.6 Configuración avanzada del espacio de nombres define secciones separadas de estado y sin estado de la aplicación, con las primeras utilizando sesiones y formularios de inicio de sesión, y las últimas sin sesiones y autenticación BÁSICA:

<!-- Stateless RESTful service using Basic authentication -->
<http pattern="/restful/**" create-session="stateless">
    <intercept-url pattern='/**' access='ROLE_REMOTE' />
    <http-basic />
</http>

<!-- Empty filter chain for the login page -->
<http pattern="/login.htm*" security="none"/>

<!-- Additional filter chain for normal users, matching all other requests -->
<http>
    <intercept-url pattern='/**' access='ROLE_USER' />
    <form-login login-page='/login.htm' default-target-url="/home.htm"/>
    <logout />
</http>

No puedo imaginar cómo hacer lo mismo con Java Config. Es importante que desactive las sesiones y use un punto de entrada diferente para mis servicios web. Ahora mismo tengo lo siguiente:

@Override
public void configure(WebSecurity security)
{
    security.ignoring().antMatchers("/resource/**", "/favicon.ico");
}

@Override
protected void configure(HttpSecurity security) throws Exception
{
    security
            .authorizeRequests()
                .anyRequest().authenticated()
            .and().formLogin()
                .loginPage("/login").failureUrl("/login?loginFailed")
                .defaultSuccessUrl("/ticket/list")
                .usernameParameter("username")
                .passwordParameter("password")
                .permitAll()
            .and().logout()
                .logoutUrl("/logout").logoutSuccessUrl("/login?loggedOut")
                .invalidateHttpSession(true).deleteCookies("JSESSIONID")
                .permitAll()
            .and().sessionManagement()
                .sessionFixation().changeSessionId()
                .maximumSessions(1).maxSessionsPreventsLogin(true)
                .sessionRegistry(this.sessionRegistryImpl())
            .and().and().csrf()
                .requireCsrfProtectionMatcher((r) -> {
                    String m = r.getMethod();
                    return !r.getServletPath().startsWith("/services/") &&
                            ("POST".equals(m) || "PUT".equals(m) ||
                                    "DELETE".equals(m) || "PATCH".equals(m));
                });
}

Usando esto pude deshabilitar la protección CSRF para mis servicios web. Pero realmente necesito una configuración HTTP completamente separada para poder deshabilitar sesiones y especificar un punto de entrada diferente. Sé que puedo usarrequestMatcher orequestMatchers para restringir los URI a los que se aplica, pero no parece que pueda usar esto para crear configuraciones separadas. Es casi como necesitodos configure(HttpSecurity security) metodos

Respuestas a la pregunta(1)

Su respuesta a la pregunta