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

歡迎訪問 生活随笔!

生活随笔

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

javascript

Stackoverflow的见解:投票最多的是Spring 4问题

發(fā)布時間:2023/12/3 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Stackoverflow的见解:投票最多的是Spring 4问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Stackoverflow上對Spring 4問題進行最投票和回答最多的是什么? 以下是最常見的五個問題和解答。

  • Spring中的@ Component,@ Controller,@ Repository和@Service批注有什么區(qū)別,它們可以互換使用還是具有特定功能?
  • @Transaction注釋在哪里? DAO類,調用DAO的服務還是兩者?
  • @Inject和@Autowired有什么區(qū)別? 在什么條件下使用哪一個?
  • 我應該使用@Resource或@Autowired哪個注釋? 有什么區(qū)別?
  • Spring Framework的用途是什么?
  • Spring中的@ Component,@ Controller,@ Repository和@Service批注有什么區(qū)別,它們可以互換使用還是具有特定功能?

    這些構造型旨在標記多層應用程序中的不同層。 業(yè)務,表示層和持久層中的組件分別由@ Service@ Component和@Repository進行注釋,如下所示:

    • 數據訪問組件帶有@Repository批注
    • 服務組件@Service
    • 控制器組件帶有@Controller批注
    • 其他任何組件都用@Component注釋。

    所有這些注釋本身都使用@Component進行注釋 所以問題是:我們可以對所有自動掃描的類使用@Component嗎? 是的,沒有!

    所有帶有此批注標記的類都將被自動掃描,但是,由于這些批注旨在幫助開發(fā)人員清楚地傳達組件的意圖,因此不會被視為一種好的做法。

    這些注釋的技術互換性有一個例外。 @Repository標記為其注釋的所有bean賦予特殊行為。 PersistenceExceptionTranslationPostProcessor自動將持久性異常轉換應用于標記有@Repository的任何bean。

    考慮一下Spring框架參考手冊中的以下段落。

    后處理器自動查找所有異常轉換器(PersistenceExceptionTranslator接口的實現),并建議所有標有@Repository批注的bean,以便發(fā)現的轉換器可以攔截適當的轉換并將其應用于引發(fā)的異常。

    進一步的考慮是,在Spring框架的未來版本中,使用這些批注可能會傳達與其各自層有關的特殊功能,并且通過適當地使用這些批注,您可以確保您的應用程序將受益于此類功能,而無需進行重構或進行最少的重構。

    原始問題和答案可以在Stackoverflow網站上查看。 感謝以下回答它們構成本文一部分的海報: akash746 , nijogeorgep和Colin McCree提出了原始問題。

    DAO類,調用DAO的服務還是兩者?

    答案分為兩個陣營:那些贊成在服務層上注釋類的人,以及那些對DAO進行注釋的人。

    服務層

    傳統(tǒng)的Spring體系結構建議事務性語義位于服務級別。 操作的原子性應為我們的決定提供依據。 事務注釋應放在所有不可分割的操作周圍。 考慮匯款的經典示例。 它包含以下調用:

  • 記入發(fā)送帳戶
  • 扣款收款人帳戶
  • 這兩個事務都必須成功或失敗,因此事務必須同時包含調用1和2。

    如果服務層必須在數據訪問層中的DAO上調用不同的方法以執(zhí)行完整的操作,并且其中一個調用失敗,而其他成功則可能導致數據庫狀態(tài)不一致。 因此,在服務層進行的調用周圍注釋將保護操作的原子性。

    為了進一步確定,您可能希望通過添加@Transactional(propagation = Propagation.MANDATORY)在數據訪問層中注釋借方和貸方通話。 這將確保事務已在調用方中啟動,并且如果不存在活動事務,則將引發(fā)異常。

    與在DAO方法上進行直接注釋相比,對服務層進行注釋可能會導致更持久的事務。 您做出的選擇將取決于業(yè)務邏輯所需的級別事務隔離。

    領域驅動設計正在出現一種新興趨勢。 Spring Roo是這種趨勢的一個很好的例子。

    這樣做的目的是使域對象比傳統(tǒng)的Spring架構豐富得多,通常它們是貧血的,尤其是將事務和持久性語義放在域對象本身上。

    在僅需簡單的CRUD操作的用例中,Web控制器將直接在域對象上運行(在此上下文中充當實體),并且沒有服務層。

    如果域對象之間需要某種形式的協(xié)調,則可以按照傳統(tǒng)使用@Transaction來具有服務bean句柄。 您可以將域對象上的事務傳播設置為REQUIRED之類,以便域對象使用任何現有事務,例如在服務bean處啟動的事務。

    原始問題和答案可以在Stackoverflow網站上查看。 感謝以下回答這些問題的張貼者,這些張貼者構成了本文的一部分: Willie Wheeler , Michael Wiles , mnp , tweekran , djt和Thomas Einwaller提出了原始問題。

    在什么條件下使用哪一個?

    簡短的答案:沒有區(qū)別,可以互換使用。

    更詳細地,@ Inject注釋是Java EE 7的上下文和依賴性注入框架的一部分( JSR 346另請參見JSR 365 for Java 2.0),而@Autowired是Spring框架自己的實現(請參閱Java doc )。

    原始問題和答案可以在Stackoverflow網站上查看。 感謝以下回答它們構成本文一部分的海報: pap和Rachel提出了原始問題。

    有什么區(qū)別?

    @Autowired (或@Inject )和@Resource批注具有相同的功能。 但是有一個概念上的區(qū)別:

    • @Resource應該用于通過名稱獲取已知資源。 名稱是從帶注釋的設置器或字段中提取的,或者是從注釋的名稱參數的名稱中獲取的。
    • @Inject@Autowired批注嘗試按類型注入合適的組件。

    本質上,這是兩個不同的概念。 令人失望的是,Spring的@Resource批注實現具有內置的回退,當解析按名稱失敗時會觸發(fā)該回退。 它回退到@Autowired批注所使用的分辨率類型。 盡管這種回退很方便,但是由于人們沒有意識到概念上的差異,因此可能會造成混亂,并且傾向于使用@Resource進行基于類型的注入。

    選擇依賴項的方式特定于注釋。 以下是每個批注解決注入的方式:

    @Autowired和@Inject

  • 按類型匹配
  • 受預選賽限制
  • 按名稱匹配
  • @資源

  • 按名稱匹配
  • 按類型匹配
  • 受限定詞限制(如果按名稱找到匹配項則忽略)
  • Spring參考手冊中的這句話建議使用@Resource而不是@Autowired ,其中首選使用名稱注入。

    如果您打算通過名稱表示注釋驅動的注入,則即使技術上可以通過@Qualifier值引用bean名稱,也不要主要使用@Autowired 。 而是使用JSR-250 @Resource批注,該批注的語義定義是通過其唯一名稱標識特定的目標組件,而聲明的類型與匹配過程無關。

    由于這種語義差異的特定結果,本身定義為集合或映射類型的bean無法通過@Autowired注入,因為類型匹配不適用于它們。 對此類bean使用@Resource ,通過唯一名稱引用特定的collection或map bean。

    @Autowired適用于字段,構造函數和多參數方法,從而允許在參數級別縮小限定符注釋的范圍。 相比之下,只有具有單個參數的字段和bean屬性設置器方法才支持@Resource 。 因此,如果注入目標是構造函數或多參數方法,請堅持使用限定符。

    原始問題和答案可以在Stackoverflow網站上查看。 謝謝以下海報誰的答案這篇文章的組成部分: 卡爾蒂克 , 斯蒂芬 , Ichthyo和mlo55誰問原來的問題。

    Spring Framework的用途是什么?

    Spring Framework可以描述為三種方式:

  • Spring是用于依賴項注入的框架:一種設計模式,允許開發(fā)人員通過將依賴項注入到類中來構建非常分離的系統(tǒng)。
  • 它優(yōu)雅地包裝了Java庫,從而使它在您的應用程序中更容易使用。
  • 該框架中包括常用模式的實現,例如REST和MVC Web框架,這些模式主要在Web應用程序中使用。
  • 原始問題和答案可以在Stackoverflow網站上查看。 感謝以下回答這些問題的海報,它們是本文的一部分: karstensrage和maksim ,他們提出了原始問題。

    我希望您發(fā)現對stackoverflow上最受歡迎的問題的理解很有意思。 如果您有任何反饋意見,請發(fā)表評論。 可以在這里找到本文的原始文章: Stackoverflow的見解:Spring 4投票最多的問題。

    如果您對設計模式感興趣,那么您可能會對我的新書感興趣: Professional Java EE Design Patterns 。 對于想要更有效地使用Java EE的任何人來說,它都是一個完美的伴侶,并且是涵蓋解決實際問題的設計模式的理論和應用的唯一資源。

    翻譯自: https://www.javacodegeeks.com/2016/02/insights-stackoverflow-voted-spring-4-questions.html

    總結

    以上是生活随笔為你收集整理的Stackoverflow的见解:投票最多的是Spring 4问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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