SSM注解介紹大全


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


SSM注解詳細介紹

@Controller

通過@Controller注解說明該類非普通類,而是一個控制器類,這一個注解一般使用在SpringMvc層

@RequestMapping

是一個用來處理請求地址映射的注解,可用于類或方法上。用于類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。用于方法上表示請求的方法是該地址的子路徑。

@RequestMapping注解有六個屬性,分成三類進行說明:

  1. value ,method;
  • value: 指定請求的實際地址,指定的地址可以是URI Template 模式;

  • method: 指定請求的method類型, GET、POST、PUT、DELETE等;

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

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

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

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

  • headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求。

@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顧名思義,就是自動裝配。其作用是為了消除代碼Java代碼里面的getter/setter與bean屬性中的property。當然,getter看個人需求,如果私有屬性需要對外提供的話,應當予以保留。@Autowired默認按類型匹配的方式,在容器查找匹配的Bean,當有且僅有一個匹配的Bean時,Spring將其注入@Autowired標注的變量中。
@Autowired默認按照byType方式進行bean匹配,@Resource默認按照byName方式進行bean匹配@Autowired是Spring的注解,@Resource是J2EE的注解。在SSM框架的Service層使用@Autowired注解自動導入Dao包容易爆紅,雖然代碼可以運行但是使用@Resourse就不會出現(xiàn)報錯的現(xiàn)象

@Service

@Service用于標注業(yè)務層組件

@Service
public class DeptServiceImpl implements IDeptService {
    @Resource  //自動注入 但不會報錯
     IDeptDao deptDao;

@ResponseBody

作用: 該注解用于將Controller的方法返回的對象,通過適當?shù)腍ttpMessageConverter轉(zhuǎn)換為指定格式后,寫入到Response對象的body數(shù)據(jù)區(qū)。
使用時機:返回的數(shù)據(jù)不是html標簽的頁面,而是其他某種格式的數(shù)據(jù)時(如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

這個注解是@RequestBody和@Controller的合體,作用也是兩個注解的合并。
1)如果只是使用@RestController注解Controller,則Controller中的方法無法返回jsp頁面,配置的視圖解析器InternalResourceViewResolver不起作用,返回的內(nèi)容就是Return 里的內(nèi)容。
例如:本來應該到success.jsp頁面的,則其顯示success.

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

@Param

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

@RequestParam

在springMVC中使用RequestParam注解映射請求參數(shù),@RequestParam有三個屬性,分別如下:
(1) value 請求參數(shù)的參數(shù)名,作為參數(shù)映射名稱;
(2) required ,默認為true(必填),當設(shè)置成必填時,如果沒有傳入?yún)?shù),報錯;
(3) defaultValue 設(shè)置請求參數(shù)的默認值;

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

value:參數(shù)key,可以不寫;
required:默認值為true,可以不寫;

Spring其它常用注解匯總

使用注解之前要開啟自動掃描功能,其中base-package為需要掃描的包(含子包)。

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

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

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