Existem 5 anotações que podem ser usadas para fazer feijões de primavera. Listar abaixo das respostas.
Você realmente precisa de uma interface? Se você tiver uma implementação para cada interface de serviço, evite-a, use apenas classe. Obviamente, se você não possui RMI ou quando o proxy da interface é necessário.
@Repository - use para injetar suas classes de camadas dao.
@ Service - use para injetar suas classes de camada de serviço. Na camada de serviço também pode ser necessário usar a anotação @Transactional para o gerenciamento de transações do banco de dados.
@ Controlador - use para seus controladores de camada de front-end, como beans gerenciados por JSF, injetando como beans de primavera.
@RestController - use para controladores de descanso de primavera, isso ajudará você a evitar sempre colocar anotações @ResponseBody e @RequestBody em seus métodos de descanso.
@Component - use-o em qualquer outro caso, quando você precisar injetar Spring Bean, que não é da classe controller, service ou dao