SSM注解介紹大全


title: SSM注解
categories: 注解
tags: 注解


SSM注解詳細(xì)介紹

@Controller

通過(guò)@Controller注解說(shuō)明該類非普通類,而是一個(gè)控制器類,這一個(gè)注解一般使用在SpringMvc層

@RequestMapping

是一個(gè)用來(lái)處理請(qǐng)求地址映射的注解蔚龙,可用于類或方法上。用于類上木羹,表示類中的所有響應(yīng)請(qǐng)求的方法都是以該地址作為父路徑甲雅。用于方法上表示請(qǐng)求的方法是該地址的子路徑务荆。

@RequestMapping注解有六個(gè)屬性,分成三類進(jìn)行說(shuō)明:

  1. value 穷遂,method
  • value: 指定請(qǐng)求的實(shí)際地址蚪黑,指定的地址可以是URI Template 模式;

  • method: 指定請(qǐng)求的method類型忌穿, GET抒寂、POST掠剑、PUT、DELETE等朴译;

  1. consumesproduces
  • consumes: 指定處理請(qǐng)求的提交內(nèi)容類型(Content-Type)眠寿,例如application/json, text/html;

  • produces: 指定返回的內(nèi)容類型,僅當(dāng)request請(qǐng)求頭中的)類型中包含該指定類型才返回盯拱;

  1. params盒发,headers
  • params: 指定request中必須包含某些參數(shù)值是狡逢,才讓該方法處理。

  • params 只是判斷url 或者 form data 中的參數(shù)是否復(fù)合params的定義奢浑,并不會(huì)直接綁定數(shù)據(jù)到方法的參數(shù)中!

  • headers: 指定request中必須包含某些指定的header值殷费,才能讓該方法處理請(qǐng)求低葫。

@Controller
@RequestMapping("/dept")
public class DeptHandler {
    @Autowired
    IDeptService deptService;

    @RequestMapping("/findDept.do")
    public String findDept(@RequestParam(defaultValue = "1") int pageIndex, String name, Model model){

        PageModel pageModel = new PageModel();
        pageModel.setPageIndex(pageIndex);
        List<Dept> depts = deptService.findDept(name,pageModel);

        //查詢部門(mén)記錄數(shù)
        int recordCount = deptService.findDeptCount(name);
        pageModel.setRocordCount(recordCount);
        model.addAttribute("pageModel",pageModel);
        model.addAttribute("depts",depts);
        model.addAttribute("name",name);
        for (Dept d:depts){
            System.out.println(d);
        }
        return "/jsp/dept/dept.jsp";
    }

@Resource和@Autowired

@Autowired顧名思義仍律,就是自動(dòng)裝配。其作用是為了消除代碼Java代碼里面的getter/setter與bean屬性中的property水泉。當(dāng)然,getter看個(gè)人需求草则,如果私有屬性需要對(duì)外提供的話钢拧,應(yīng)當(dāng)予以保留源内。@Autowired默認(rèn)按類型匹配的方式,在容器查找匹配的Bean份殿,當(dāng)有且僅有一個(gè)匹配的Bean時(shí),Spring將其注入@Autowired標(biāo)注的變量中卿嘲。
@Autowired默認(rèn)按照byType方式進(jìn)行bean匹配,@Resource默認(rèn)按照byName方式進(jìn)行bean匹配@Autowired是Spring的注解拾枣,@Resource是J2EE的注解。在SSM框架的Service層使用@Autowired注解自動(dòng)導(dǎo)入Dao包容易爆紅梅肤,雖然代碼可以運(yùn)行但是使用@Resourse就不會(huì)出現(xiàn)報(bào)錯(cuò)的現(xiàn)象

@Service

@Service用于標(biāo)注業(yè)務(wù)層組件

@Service
public class DeptServiceImpl implements IDeptService {
    @Resource  //自動(dòng)注入 但不會(huì)報(bào)錯(cuò)
     IDeptDao deptDao;

@ResponseBody

作用: 該注解用于將Controller的方法返回的對(duì)象,通過(guò)適當(dāng)?shù)腍ttpMessageConverter轉(zhuǎn)換為指定格式后凭语,寫(xiě)入到Response對(duì)象的body數(shù)據(jù)區(qū)。
使用時(shí)機(jī):返回的數(shù)據(jù)不是html標(biāo)簽的頁(yè)面似扔,而是其他某種格式的數(shù)據(jù)時(shí)(如json、xml等)使用炒辉;

 @RequestMapping("/addDept.do")
    @ResponseBody
    public Object addDept(Dept dept){
        int rows = deptService.addDept(dept);
        if(rows > 0){
            int recordCount = deptService.findDeptCount(null);
            PageModel pageModel = new PageModel();
            pageModel.setRocordCount(recordCount);
            int totalSize = pageModel.getTotalSize();
            System.out.println(totalSize);
            return totalSize;
        }else{
            return "FAIL";
        }
    }

@RestController

這個(gè)注解是@RequestBody和@Controller的合體,作用也是兩個(gè)注解的合并泉手。
1)如果只是使用@RestController注解Controller黔寇,則Controller中的方法無(wú)法返回jsp頁(yè)面斩萌,配置的視圖解析器InternalResourceViewResolver不起作用屏轰,返回的內(nèi)容就是Return 里的內(nèi)容憋飞。
例如:本來(lái)應(yīng)該到success.jsp頁(yè)面的霎苗,則其顯示success.

  1. 如果需要返回到指定頁(yè)面榛做,則需要用 @Controller配合視圖解析器InternalResourceViewResolver才行。
    3)如果需要返回JSON检眯,XML或自定義mediaType內(nèi)容到頁(yè)面厘擂,則需要在對(duì)應(yīng)的方法上加上@ResponseBody注解刽严。

@Param

不使用@Param注解時(shí),參數(shù)只能有一個(gè)避凝,并且是Javabean。在SQL語(yǔ)句里可以引用JavaBean的屬性恕曲,而且只能引用JavaBean的屬性
一般在Dao接口傳遞兩個(gè)或三個(gè)較少的參數(shù)時(shí)可以使用@Param注解,如果涉及的參數(shù)較多佩谣,可以把所有參數(shù)進(jìn)行Map封裝把还,然后傳遞Map就可以了

@RequestParam

在springMVC中使用RequestParam注解映射請(qǐng)求參數(shù)茸俭,@RequestParam有三個(gè)屬性,分別如下:
(1) value 請(qǐng)求參數(shù)的參數(shù)名,作為參數(shù)映射名稱调鬓;
(2) required ,默認(rèn)為true(必填)腾窝,當(dāng)設(shè)置成必填時(shí),如果沒(méi)有傳入?yún)?shù)虹脯,報(bào)錯(cuò);
(3) defaultValue 設(shè)置請(qǐng)求參數(shù)的默認(rèn)值循集;

@requestParam主要用于在SpringMVC后臺(tái)控制層獲取參數(shù),類似一種是request.getParameter("name"),它有三個(gè)常用參數(shù):defaultValue = "0", required = false, value = "isApp"疆柔;defaultValue 表示設(shè)置默認(rèn)值咒精,required 銅過(guò)boolean設(shè)置是否是必須要傳入的參數(shù)旷档,value 值表示接受的傳入的參數(shù)類型。

value:參數(shù)key彬犯,可以不寫(xiě);
required:默認(rèn)值為true谐区,可以不寫(xiě);

Spring其它常用注解匯總

使用注解之前要開(kāi)啟自動(dòng)掃描功能宋列,其中base-package為需要掃描的包(含子包)。

@Configuration把一個(gè)類作為一個(gè)IoC容器炼杖,它的某個(gè)方法頭上如果注冊(cè)了@Bean灭返,就會(huì)作為這個(gè)Spring容器中的Bean坤邪。
@Scope注解 作用域
@Lazy(true) 表示延遲初始化
@Service用于標(biāo)注業(yè)務(wù)層組件、
@Controller用于標(biāo)注控制層組件(如struts中的action)
@Repository用于標(biāo)注數(shù)據(jù)訪問(wèn)組件艇纺,即DAO組件。
@Component泛指組件黔衡,當(dāng)組件不好歸類的時(shí)候,我們可以使用這個(gè)注解進(jìn)行標(biāo)注盟劫。
@Scope用于指定scope作用域的(用在類上)
@PostConstruct用于指定初始化方法(用在方法上)
@PreDestory用于指定銷毀方法(用在方法上)
@DependsOn:定義Bean初始化及銷毀時(shí)的順序
@Primary:自動(dòng)裝配時(shí)當(dāng)出現(xiàn)多個(gè)Bean候選者時(shí),被注解為@Primary的Bean將作為首選者侣签,否則將拋出異常
@Autowired 默認(rèn)按類型裝配,如果我們想使用按名稱裝配影所,可以結(jié)合@Qualifier注解一起使用氢哮。如下:@Autowired @Qualifier("personDaoBean") 存在多個(gè)實(shí)例配合使用
@Resource默認(rèn)按名稱裝配型檀,當(dāng)找不到與名稱匹配的bean才會(huì)按類型裝配听盖。
@PostConstruct 初始化注解
@PreDestroy 摧毀注解 默認(rèn) 單例 啟動(dòng)就加載
@Async異步方法調(diào)用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末裂七,一起剝皮案震驚了整個(gè)濱河市仓坞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌无埃,老刑警劉巖徙瓶,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侦镇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡壳繁,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)闹炉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人渣触,你說(shuō)我怎么就攤上這事∫既簦” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵啊犬,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我壁查,道長(zhǎng),這世上最難降的妖魔是什么睡腿? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮席怪,結(jié)果婚禮上应闯,老公的妹妹穿的比我還像新娘碉纺。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布骨田。 她就那樣靜靜地躺著,像睡著了一般态贤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上悠汽,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音柿冲,去河邊找鬼。 笑死姻采,一個(gè)胖子當(dāng)著我的面吹牛雅采,可吹牛的內(nèi)容都是我干的慨亲。 我是一名探鬼主播婚瓜,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼巴刻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蛉签?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤碍舍,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后片橡,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體妈经,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吹泡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年经瓷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舆吮。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡揭朝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出萝勤,到底是詐尸還是另有隱情,我是刑警寧澤敌卓,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布伶氢,位于F島的核電站,受9級(jí)特大地震影響癣防,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蕾盯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一幕屹、第九天 我趴在偏房一處隱蔽的房頂上張望级遭。 院中可真熱鬧,春花似錦挫鸽、人聲如沸说敏。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)枫匾。三九已至,卻和暖如春干茉,著一層夾襖步出監(jiān)牢的瞬間谴忧,已是汗流浹背等脂。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留上遥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓粉楚,卻偏偏與公主長(zhǎng)得像亮垫,于是被迫代替她去往敵國(guó)和親伟骨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子饮潦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359