Spring常用注解配置

IOC相關(guān)

首先要在配置文件中啟用注解掃描:

<context:component-scan base-package="com"/>

<context:component-scan />標(biāo)簽負(fù)責(zé)掃描哪些類有注解,base-package為需要掃描的包路徑(含所有子包)。

@Controller:用于標(biāo)注控制器組件
@Service:用于標(biāo)注業(yè)務(wù)層組件
@Repository:用于標(biāo)注數(shù)據(jù)訪問組件
@Component:用于對比較中立的類進(jìn)行注解。與前三個注解等效。

@Resource:用于依賴關(guān)系裝配。默認(rèn)按名稱裝配。名稱可以通過@Resource的name屬性指定。如果沒有指定name屬性,則支持自動裝配。
@Autowired:自動裝配
該注解可以實現(xiàn)對方法形參的自動裝配,查找被標(biāo)注的方法的入?yún)㈩愋偷腂ean,并調(diào)用方法自動注入

有注解的類,會自動注冊為bean,并將bean的名字設(shè)置為該類的類名,但首字母小寫,可以通過添加參數(shù)來指定名稱。例:@Controller("con")

AOP相關(guān)

啟動基于注解的AspectJ支持

<aop:aspectj-autoproxy />

@Aspect:使用@Aspect注解的類,Spring會當(dāng)作切面類處理。
@Before(切入點表達(dá)式):前置通知
@AfterReturning(切入點表達(dá)式):后置通知
@AfterThrowing(pointcut = 連接點,throwing = "e"):異常通知
必須使用@AfterThrowing(pointcut = 連接點,throwing = "e")的形式,否則會出現(xiàn)”error at ::0 formal unbound in pointcutd”錯誤
@After(切入點表達(dá)式):最終通知
@Around(切入點表達(dá)式):環(huán)繞通知
@Pointcut:定義切入點表達(dá)式,需要同時定義一個切入點方法,返回值為void且方法體為空

事務(wù)管理

<!—為事務(wù)管理器注冊注解驅(qū)動器-->
<tx:annotation-driven transaction-manager="txManager"/> 

@Transactionald 使用該注解的類會添加事務(wù)
@Transactional(readOnly = true) 對不涉及寫數(shù)據(jù)庫寫入操作的方法,可加入只讀屬性以提高速度

MVC

@RequestMapping("url") 注解請求地址
給處理方法添加RequestMapping注解
對應(yīng)前端請求地址http://localhost:8080/TestApp/login.do

@ResponseBody
Spring4的控制器可以使用response對象做出ajax響應(yīng),并利用@ResponseBody注解自動將數(shù)據(jù)生成json響應(yīng)給瀏覽器。

@ModelAttribute
被@ModelAttribute注釋的方法會在此controller每個方法執(zhí)行前被執(zhí)行, 可以用來攔截請求、控制登錄權(quán)限等


常用注解

Controller
注解一個類表示控制器,Spring MVC會自動掃描標(biāo)注了這個注解的類。

RequestMapping
請求路徑映射,可以標(biāo)注類,也可以是方法,可以指定請求類型,默認(rèn)不指定為全部接收。

RequestParam
放在參數(shù)前,表示只能接收參數(shù)a=b格式的數(shù)據(jù),即 Content-Type為 application/x-www-form-urlencoded類型的內(nèi)容。

RequestBody
放在參數(shù)前,表示參數(shù)從request body中獲取,而不是從地址欄獲取,所以這肯定是接收一個POST請求的非a=b格式的數(shù)據(jù),即 Content-Type不為 application/x-www-form-urlencoded類型的內(nèi)容。

ResponseBody
放在方法上或者返回類型前,表示此方法返回的數(shù)據(jù)放在response body里面,而不是跳轉(zhuǎn)頁面。一般用于ajax請求,返回json數(shù)據(jù)。

RestController
這個是Controller和ResponseBody的組合注解,表示@Controller標(biāo)識的類里面的所有返回參數(shù)都放在response body里面。

PathVariable
路徑綁定變量,用于綁定restful路徑上的變量。

@RequestHeader
放在方法參數(shù)前,用來獲取request header中的參數(shù)值。

@CookieValue;
放在方法參數(shù)前,用來獲取request header cookie中的參數(shù)值。

GetMapping PostMapping PutMapping.. *Mapping的是Spring4.3加入的新注解,表示特定的請求類型路徑映射,而不需要寫RequestMethod來指定請求類型。

演示

import org.dom4j.util.UserDataElement;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/test")
public class TestController {
    
    @RequestMapping(value = "/get/{no}", method = RequestMethod.GET)    
    @ResponseBody   
    public Object get(@PathVariable("no") String no) {        
          return new UserDataElement("");    
    }  

    @RequestMapping(value = "/save", method = RequestMethod.POST)    
    public void save(@RequestBody UserDataElement user) {

    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容