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. consumes,produces
  • 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);

        //查詢部門記錄數(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)換為指定格式后,寫入到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,可以不寫;
required:默認(rèn)值為true,可以不寫;

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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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