SSH框架使用註解簡化代碼

来源:http://www.cnblogs.com/yzoro/archive/2016/10/17/5970286.html
-Advertisement-
Play Games

註釋的優勢: 1.最簡單直接的優勢就是減少了配置文件的代碼量。 2.註釋和Java代碼位於一個文件中,而XML 配置採用獨立的配置文件。配置信息和 Java 代碼放在一起,有助於增強程式的內聚性。而採用獨立的XML 配置文件,程式員在編寫一個功能時,往往需要在程式文件和配置文件中不停切換,這種思維上 ...


註釋的優勢:

    1.最簡單直接的優勢就是減少了配置文件的代碼量。

    2.註釋和Java代碼位於一個文件中,而XML 配置採用獨立的配置文件。配置信息和 Java 代碼放在一起,有助於增強程式的內聚性。而採用獨立的XML 配置文件,程式員在編寫一個功能時,往往需要在程式文件和配置文件中不停切換,這種思維上的不連貫會降低開發效率。

 SSH 註解組合使用: 

    

這裡我推薦用最後一種。

 

我們在使用註解前先要在applicationContext.xml文件中加入

<!-- 自動掃描包,也會自動註入解釋器,所以不需要 context:annotation-config -->
    <context:component-scan base-package="news"></context:component-scan>

 

去掉 context:annotation-config 和用來註入的bean和property

<!-- 原理:自動註入processor解析器,用來解析註解 -->
    <!-- <context:annotation-config/> -->

<bean id="myNewsAction" class="news.action.NewsAction" scope="prototype">
  <property name="ns" ref="myNewsService"></property>
</bean>

<bean id="myNewsService" class="news.service.NewsServiceImpl" scope="prototype">
  <property name="nd" ref="myNewsDao"></property>
</bean>

<bean id="myNewsDao" class="news.dao.NewsDaoImpl" scope="prototype">
  <property name="sf" ref="mySessionFactory" />
</bean>

 

然後我們在 Action  Service  Dao 類加入對應的註解@Controller@Service@Repository

導入對應包 import org.springframework.stereotype.Controller(Repository  Service);

雖然這些只是規範,不對應寫也沒關係,不過養成良好的代碼習慣比較好,建議大家都要這樣寫。

 

這裡我就不一一舉例了,我們只拿Action舉例:

先找到Action類在前面加註解:

@Controller("註入實例的名字")如果不寫預設自動找到對應action類名稱首字母改為小寫

當我們不寫的時候註意struts.xml中把class也改成預設名字:

<action name="NewsAction_*" class="預設名字" method="{1}">

@Scope("prototype")非單例 註意:這個如果不寫單獨運行並不會報錯,多人訪問就會報錯。

 

 然後我用註釋進一步簡化 Action  Service  Dao 類,去掉裡面set方法。

我們只需要在聲明變數的前面加註解@Autowired和@Qualifier("bean的名稱")

需要導入這兩個包:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

@Autowired可以單獨使用,預設情況下使用 @Autowired 註解會自動註入,Spring 容器中匹配的候選 Bean 數目必須有且僅有一個。當找不到一個匹配的 Bean 時,Spring 容器將拋出BeanCreationException 異常,並指出必須至少擁有一個匹配的。所以我們通過 @Qualifier 註釋指定註入 Bean 的名稱,這樣就可以解決異常。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原文地址: PHP 雜談《重構-改善既有代碼的設計》之一 重新組織你的函數 思維導圖 點擊下圖,可以看大圖。 原文地址: PHP 雜談《重構-改善既有代碼的設計》之一 重新組織你的函數 思維導圖 點擊下圖,可以看大圖。 介紹 我把我比較喜歡的和比較關註的地方寫下來和大家分享。上次我寫了篇《php 跟 ...
  • Atitit 異常的實現原理 與用戶業務異常 1.1. 異常的實現原理1 1.2. 用戶業務異常1 1.3. 異常轉譯和異常鏈2 1.4. 避免異常2 1.5. 異常恢復3 1.6. catch代碼塊中捕獲異常處理流程3 1.1. 異常的實現原理 方法調用棧(method invocation st ...
  • 題目:有n張紙片,隨機取4張(可放回),如4張面值加起來可等於m,則輸出yes,否則no。紙片的面值為k[1],k[2]…… 思路:使用4次迴圈尋找會導致超時,所以假設4張分別為a,b,c,d, 先計算二次迴圈a+b所有可能放入數組kk,然後將kk排序, 最後使用二次迴圈(m-c-d)與kk用二分法 ...
  • 題意:輸入一個x,將x拆分成一些小的數(這些數不能相同,即x=a1+a2+...... ai!=aj when i!=j),然後這些數相乘得到一個成積(s=a1*a2*......),求最大的乘積s; 思路:考慮最簡單的做法便是貪心,很明顯將一個數分的越小,這個乘積越大,那麼對於給的x 先找2+3+ ...
  • 現在把關於多線程的能想到的需要註意的點記錄一下: 關於threading模塊: 1、關於 傳參問題 如果調用的子線程函數需要傳參,要在參數後面加一個“,”否則會拋參數異常的錯誤。 如下: 2、關於join()阻塞 join()方法一旦被調用,這個線程就會被阻塞住,等其他線程執行完才執行自身。當我們在 ...
  • 以前一直是沒有寫博客的習慣的,無他,手懶而已。 年紀漸長,記憶力日漸衰退,才明白“好記性不如爛筆頭”,古人誠不我欺。 當然,作為互聯網時代的IT人士,我們不用筆頭,用鍵盤。今天開始寫博客,把學習、經歷過的點點滴滴我覺得有用的東西記錄下來。或許這些東西都是簡簡單單普普通通的東西,您覺得不值一看。但是弊 ...
  • 介紹 一個快速示例 其它特性 啟動模板 如何使用 介紹 我們總是對不同的需求開發不同的應用。但至少在某些層面上,一次又一次地重覆實現通用的和類似的功能。如:授權,驗證,異常處理,日誌,本地化,資料庫連接管理,設置管理,審核日誌等功能。所以我們創建架構和最佳實踐,如分層和模塊架構,DDD,依賴註入等, ...
  • 先發代碼,有空來寫內容。 observer1 observer2 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...