CORS en Spring. No es lo mismo WebMVC que DataRest

Si estás usando Spring Data Rest (por ejemplo con @RepositoryRestResource) y estás tratando de configurar CORS en tu API con spring boot quizá hayas probado implementando el método WebMvcConfigurer::addCorsMappings y no te ha funcionado

Eso es porque todas las respuestas que puedas encontrar en google te dirán que uses ese método o añadir la anotación @CrossOrigin a tus controladores. En mi caso trataba de evitar la anotación para no tener que ir controlador por controlador cambiando la anotación, a parte de que quería configurar el allowedHost desde el application.yml.

Entonces, la solución que encontré es implementar el método de RepositoryRestConfigurer:

@Configuration
    public static class GlobalRepositoryRestConfigurer implements RepositoryRestConfigurer {
        @Override
        public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
            config.getCorsRegistry().addMapping("/**")
                    .allowedOrigins("http://localhost:3000")
                    .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH")
                    .allowCredentials(true)
                    .maxAge(3600);
        }
    }

Ojocuidado porque si tienes controladores de ambos tipos (Data Rest y WebMVC) tendrá que tener los dos métodos.