使用@Component,@Repository,@Service和@Controller註釋就緒並啓用自動組件掃描後,spring將自動將bean導入到容器中,因此您無需明確定義它們以自動裝入它們。
@Component
的@Component註釋標記的Java類作爲豆所以彈簧的組件的掃描機構可以把它撿起來,並將其拉入應用程序上下文。要使用此批註,應用它在類,如下:
@Repository
雖然上面使用@Component是不夠好,但你可以用更合適的註解,專門爲DAO的即@Repository提供了額外的好處註解。 @Repository註釋是具有類似用法和功能的@Component註釋的特化。除了將DAO導入到DI容器之外,它還會使未經檢查的異常(從DAO方法拋出)有資格轉換爲Spring DataAccessException。
@Service
的@Service註解也是成分註釋的特殊化。它目前不提供任何超過@Component註釋的額外行爲,但是在服務層類中使用@Service over @Component是個好主意,因爲它更好地指定了intent。此外,工具支持和其他行爲將來可能會依賴它。
@Controller
註解@Controller類標記爲一個和Spring Web MVC控制器。它也是一個@Component特殊化,所以用它標記的bean會自動導入到DI容器中。將@Controller註釋添加到類時,可以使用另一個註釋,即@RequestMapping;將URL映射到類的實例方法。
在您的方案中,無論您使用@Service還是@Repository,它對應用程序流程都沒有影響,應用程序將以他們有權自動裝配的方式工作。但標準的做法是使用@Repository進行dao類。
http://stackoverflow.com/questions/35449808/what-will-happen-if-we-interchange-service-and-repository-annotation-in-the-sp – soorapadman