A arquitetura de um projeto em Java geralmente segue o padrão MVC (Model-View-Controller) e algumas camadas adicionais para organização, como config, response, repositories e services. Vamos explorar cada uma dessas camadas e seu propósito:


Config (Configurações)

Responsável por: Arquivos de configuração da aplicação, como conexão com o banco de dados, segurança e outras configurações globais.

Exemplos de uso:

Exemplo:

@Configuration //Quando a aplicacao iniciar essas configuracoes devem ser carregadas
public class CorsConfig {
    @Bean //o metodo retorna um objeto que será gerenciado elo spring
    public WebMvcConfigurer corsConfigurer() { //aplicar as regras de CORS nas requisicoes HTTP
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "POST", "PUT", "DELETE");
            }
        };
    }
}


Controllers (Controladores)

Responsável por: A camada de entrada da aplicação, ou seja, a interface entre o cliente (frontend, mobile, API externa) e a lógica de negócio.

Função:

Exemplo: