Spring註解

来源:http://www.cnblogs.com/fengzhanfei/archive/2016/12/06/6136955.html
-Advertisement-
Play Games

AccountController .java Java代碼 <!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@ ...


AccountController .java 

Java代碼  收藏代碼

1.        /** 

2.         * 2010-1-23 

3.         */  

4.        package org.zlex.spring.controller;  

5.          

6.        import javax.servlet.http.HttpServletRequest;  

7.        import javax.servlet.http.HttpServletResponse;  

8.          

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

10.     import org.springframework.stereotype.Controller;  

11.     import org.springframework.web.bind.ServletRequestUtils;  

12.     import org.springframework.web.bind.annotation.RequestMapping;  

13.     import org.springframework.web.bind.annotation.RequestMethod;  

14.     import org.zlex.spring.service.AccountService;  

15.       

16.     /** 

17.      *  

18.      * @author <a href="mailto:[email protected]">梁棟</a> 

19.      * @version 1.0 

20.      * @since 1.0 

21.      */  

22.     @Controller  

23.     @RequestMapping("/account.do")  

24.     public class AccountController {  

25.       

26.         @Autowired  

27.         private AccountService accountService;  

28.       

29.         @RequestMapping(method = RequestMethod.GET)  

30.         public void hello(HttpServletRequest request, HttpServletResponse response)  

31.                 throws Exception {  

32.       

33.             String username = ServletRequestUtils.getRequiredStringParameter(  

34.                     request, "username");  

35.             String password = ServletRequestUtils.getRequiredStringParameter(  

36.                     request, "password");  

37.             System.out.println(accountService.verify(username, password));  

38.         }  

39.     }  


分段詳述: 

Java代碼  收藏代碼

1.        @Controller  

2.        @RequestMapping("/account.do")  


這兩行註解,@Controller是告訴Spring容器,這是一個控制器類,@RequestMapping("/account.do")是來定義該控制器對應的請求路徑(/account.do 

Java代碼  收藏代碼

1.        @Autowired  

2.        private AccountService accountService;  


這是用來自動織入業務層實現AccountService,有了這個註解,我們就可以不用寫setAccountService()方法了! 
同時,JSR-250標準註解,推薦使用@Resource來代替Spring專有的@Autowired註解。 

引用

Spring 不但支持自己定義的@Autowired註解,還支持幾個由JSR-250規範定義的註解,它們分別是@Resource@PostConstruct以及@PreDestroy 

  @Resource的作用相當於@Autowired,只不過@AutowiredbyType自動註入,而@Resource預設按 byName自動註入罷了。@Resource有兩個屬性是比較重要的,分別是nametypeSpring@Resource註解的name屬性解析為bean的名字,而type屬性則解析為bean的類型。所以如果使用name屬性,則使用byName的自動註入策略,而使用type屬性時則使用byType自動註入策略。如果既不指定name也不指定type屬性,這時將通過反射機制使用byName自動註入策略。 

  @Resource裝配順序 

  1. 如果同時指定了nametype,則從Spring上下文中找到唯一匹配的bean進行裝配,找不到則拋出異常

  2. 如果指定了name,則從上下文中查找名稱(id)匹配的bean進行裝配,找不到則拋出異常 

  3. 如果指定了type,則從上下文中找到類型匹配的唯一bean進行裝配,找不到或者找到多個,都會拋出異常 

  4. 如果既沒有指定name,又沒有指定type,則自動按照byName方式進行裝配(見2);如果沒有匹配,則回退為一個原始類型(UserDao)進行匹配,如果匹配則自動裝配; 

  1.6. @PostConstructJSR-250 

在方法上加上註解@PostConstruct,這個方法就會在Bean初始化之後被Spring容器執行(註:Bean初始化包括,實例化Bean,並裝配Bean的屬性(依賴註入))。

Java代碼  收藏代碼

1.@RequestMapping(method = RequestMethod.GET)  

2.public void hello(HttpServletRequest request, HttpServletResponse response)  

3.        throws Exception {  

4.  

5.    String username = ServletRequestUtils.getRequiredStringParameter(  

6.            request, "username");  

7.    String password = ServletRequestUtils.getRequiredStringParameter(  

8.            request, "password");  

9.    System.out.println(accountService.verify(username, password));  

10.     }  


註解@RequestMapping(method = RequestMethod.GET)指定了訪問方法類型。 
註意,如果沒有用這個註解標識方法,Spring容器將不知道那個方法可以用於處理get請求! 

對於方法名,我們可以隨意定!方法中的參數,類似於“HttpServletRequest request, HttpServletResponse response”,只要你需要方法可以是有參也可以是無參

介面不需要任何Spring註解相關的東西,它就是一個簡單的介面! 
重要的部分在於實現層,如下所示: 
AccountServiceImpl.java 

Java代碼  收藏代碼

1./** 

2. * 2010-1-23 

3. */  

4.package org.zlex.spring.service.impl;  

5.  

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

-Advertisement-
Play Games
更多相關文章
  • 博客一:轉載自http://shmilyaw-hotmail-com.iteye.com/blog/1825171 java stack的詳細實現分析 簡介 我們最常用的數據結構之一大概就是stack了。在實際的程式執行,方法調用的過程中都離不開stack。那麼,在一個成熟的類庫裡面,它的實現是怎麼 ...
  • 此篇文章同樣是參考SVNKit在wiki的官方文檔做的demo,每個類都可以單獨運行。具體的細節都寫到註釋里了~ 開發背景: SVNKit版本:1.7.14 附上官網下載鏈接:https://www.svnkit.com/org.tmatesoft.svn_1.7.14.standalone.zip ...
  • 1.demo中最常見的方式是在工程下的web.xml中設置(有時候根據業務可能需要設置action,在action中處理邏輯載入跳轉什麼的,比較少): 2.使用Urlrewrite地址重寫,優點還是挺多的,比如安全性能,具體可以百度下,下麵介紹使用方式: 首先還是導入 urlrewrite 的jar ...
  • 調用同步鎖的wait()、notify()、notifyAll()進行線程通信 看這個經典的存取款問題,要求兩個線程存款,兩個線程取款,賬戶里有餘額的時候只能取款,沒餘額的時候只能存款,存取款金額相同。相當於存取款交替進行,金額相同。 線程間通信,需要通過同一個同步監視器(也就是this或者顯式的O ...
  • 前言 日誌是非常重要的,最近有接觸到這個,所以系統的看一下Python這個模塊的用法。本文即為Logging模塊的用法簡介,主要參考文章為Python官方文檔,鏈接見參考列表。 另外,Python的 "HOWTOs文檔" 很詳細,連日誌該怎麼用都寫了,所以有英文閱讀能力的同學建議去閱讀一下。 Log ...
  • 1.安裝依賴包 2、安裝boost庫(對應版本高於或低於這個版本都有問題) 3、添加mysql用戶組 4、下載mysql源碼包並安裝 5.調整配置文件 6. 給安裝目錄設置許可權 7.初始化資料庫 註:初始化後會生成預設密碼,請記錄下來2016-02-17T03:16:36.869627Z 1 [No ...
  • 回到目錄 .Net MVC之所以發展的如些之好,一個很重要原因就是它公開了一組AOP的過濾器,即使用這些過濾器可以方便的攔截controller里的action,並註入我們自己的代碼邏輯,向全局的異常記錄,用戶授權,Url授權,操作行為記錄等,這一大批Lind的基本組件都是實現MVC和API的過濾實 ...
  • 代理模式(Proxy)為其他對象提供一種代理以控制對這個對象的訪問。使用場合,第一,遠程代理,也就是為一個對象在不同的地址空間提供局部代表。這樣可以隱藏一個對象存在於不同地址空間的事實;第二,虛擬代理,是根據需要創建開銷很大的對象。通過它來存在實例化需要很長時間的真實對象;第三,安全代理,用來控制真 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...