@Configuration É uma annotation que indica que determinada classe possui métodos que expõe novos beans. @Controller Associada com classes que possuem métodos que processam requests numa aplicação web. @Repository Associada com classes que isolam o acesso aos dados da sua aplicação. Comumente associada a DAO’s. @Service Associada com classes que representam a ideia do Service do Domain Driven Design. Para ficar menos teórico pense em classes que representam algum fluxo de negócio da sua aplicação. Por exemplo, um fluxo de finalização de compra envolve atualizar manipular o carrinho, enviar email, processar pagamento etc. Este é o típico código que temos dificuldade de saber onde vamos colocar, em geral ele pode ficar num Service :). @Component A annotation básica que indica que uma classe vai ser gerenciada pelo container do Spring. Todas as annotations descritas acima são, na verdade, derivadas de @Component. A ideia é justamente passar mais se...