We already know that Spring has a great plugin or module like system based on the @Enable-* annotation.
For example, Spring Cache provides @EnableCaching to support cache abstraction, Spring Data JPA provides @EnableJpaRepositories for
JPA repositories support, Spring Batch provides @EnableBatchProcessing for batch processing. So how do those annotations work and what can we benefit from them?