日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

r中rep_Spring中@ Component,@ Service,@ Controller和@Repository之间的区别

發布時間:2023/12/3 javascript 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 r中rep_Spring中@ Component,@ Service,@ Controller和@Repository之间的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

r中rep

在了解Spring框架中@Repository @Component , @Service @Controller , @Repository @Controller和@Repository批注之間的區別之前,了解@Component批注在Spring中的作用很重要。 在Spring的初始發行期間,所有bean都用于在XML文件中聲明。 對于大型項目,這很快成為一項艱巨的任務,Spring團隊很快就意識到了問題。 在更高版本中,它們提供基于注釋的依賴項注入和基于Java的配置。 從Spring 2.5開始,引入了基于注釋的依賴注入 ,該注入自動將類掃描并注冊為使用@Component注釋進行注釋的Spring bean。 這意味著您不必使用<bean&gt ;來聲明該bean。 標記并注入依賴項,它將由Spring自動完成。 使用<context:component-scan>標記啟用和禁用此功能。

現在您已經知道@Component批注的作用,讓我們看看@Service @Controller , @Repository @Controller和@Repository批注的作用。 它們只是@Component注釋在某些情況下的特殊形式。 在Spring MVC中,不是在控制器類上使用@Component ,而是使用@Controller , which is more readable and appropriate 。

通過使用該批注,我們可以做兩件事,首先,我們聲明該類是Spring bean,應該由Spring ApplicationContext創建和維護,而且還要指出它是MVC設置中的控制器。 特定于Web的工具和功能使用后一種屬性。

例如,DispatcherServlet將在使用@Controlle r注釋但未使用@Component注釋的類上查找@RequestMapping 。

這意味著@Component和@Controller在bean創建和依賴注入方面是相同的,但后來是前者的一種特殊形式。 即使將@Controller注釋替換為@Controller @Compoenent ,Spring也會自動檢測并注冊控制器類,但對于請求映射,它可能無法按預期工作。 您可以進一步看到,

@Service和@Repository批注也是如此,它們是服務和持久層中@Component化。 應該使用@Service而不是@Component注釋對服務層中的Spring Bean進行注釋,而使用@Repositor y注釋對持久性層中的Spring Bean進行注釋。

通過使用專門的注釋,我們用一塊石頭打了兩只鳥。 首先,它們被視為Spring bean,其次,您可以放置??該層所需的特殊行為。

例如, @Repository's不僅可以幫助基于注釋的配置,還可以捕獲特定于平臺的異常,并將它們作為Spring統一的未經檢查的異常之一重新拋出。

雖然如此,您還需要在應用程序上下文中將org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor聲明為Spring bean。

這個bean后處理器將顧問程序添加到任何使用@Repository注釋的bean中,以便捕獲任何特定于平臺的異常,然后將其重新拋出為Spring的未經檢查的數據訪問異常之一。 您還可以在Udemy上查看Spring Framework 5:Guru入門,了解更多詳細信息。

這也是Spring Interview常見問題之一,從Spring認證的角度來看也是一個流行的概念。 您還將在這些注釋及其在Spring專業認證考試中的用法基礎上找到幾個問題。

Spring中的組件掃描如何工作?

從Spring 2.0開始,Spring提供了<context:component-scan>和注釋驅動的依賴項注入,以自動檢測并注冊Spring bean,而不是在XML文件中指定它們。 但是,它僅掃描@Component ,通常不會查找@Controller , @Service @Controller和@Repository 。 因為它們本身被@Component注釋,所以它們被掃描。

只需看一下@Controller , @Service @Controller和@Repository批注定義:

@Component public @interface Service {….}@Componentpublic @interface Repository {….}@Componentpublic @interface Controller {…}

因此,說@Controller , @Service @Controller和@Repository是@Component批注的特殊類型是沒有錯的。 <context:component-scan>拾取它們并將其以下類注冊為bean,就像它們使用@Component進行注釋一樣。

掃描它們是因為它們本身已使用@Component注釋進行了注釋。 如果您定義自己的自定義注釋并使用@Component注釋,則還將使用<context:component-scan> 。

如果您想了解有關Spring中的依賴項注入,自動裝配以及不同類型的配置(例如Spring中基于XML,基于注釋和Java配置)的更多信息,建議您參加Pluralsight上的Spring基礎知識課程 。 也可以免費試用。

摘要

這是Spring框架中@Repository @Component , @Service @Controller , @Repository @Controller和@Repository批注的一個很好的摘要:

  • @Component是任何Spring管理的組件或bean的通用@Component型。
  • @Repository是持久層的@Repository型。
  • @Service是服務層的@Service型。
  • @Controller是表示層(spring-MVC)的原型。
  • 這是解釋Spring Framework中所有這些注釋的層次結構的漂亮圖表:

    這是所有有關的區別@Component , @Controller , @Service和@Repository在Spring框架 。 就像我說過的那樣,當啟用上下文掃描時,它們全部用于自動檢測Spring Bean,并且在依賴項注入方面基本上提供了相同的功能。

    它們的唯一區別在于用途,即在Spring MVC中使用@Controller定義控制器,首先是Spring bean,然后是controller。 類似地, @Service Service用于注釋類,這些類在Service層中保存業務邏輯,而@Repository在Data Access層中使用。

    您可以在Pluralsight上的Bryna Hassen的Spring基礎知識課程中了解有關組件掃描以及Spring框架如何自動檢測bean的更多信息。 您也可以免費獲得10天。

    簡而言之,您應該根據特定類所屬的圖層使用最合適的注釋。

    您可能喜歡的其他Spring Framework文章和面試問題

    • Spring MVC中@RestController和@Controller之間的@RestController ?
    • Spring MVC在內部如何工作?
    • Spring MVC中DispatcherServlet的用途是什么?
    • 如何在Java Web應用程序中啟用Spring安全性?
    • Spring MVC中的@RequestParam和@PathVariable之間的區別?
    • Craig Walls的《春天在行動》
    • Eugen Paraschiv的Spring Master Class REST

    感謝您到目前為止閱讀本文。 如果您喜歡這篇文章,請與您的朋友和同事分享。 如果您有任何問題或反饋,請留言。

    翻譯自: https://www.javacodegeeks.com/2017/11/difference-component-service-controller-repository-spring.html

    r中rep

    總結

    以上是生活随笔為你收集整理的r中rep_Spring中@ Component,@ Service,@ Controller和@Repository之间的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。