1. 程式人生 > >【SpringBoot】部分註解介紹

【SpringBoot】部分註解介紹

Controller註解

用來處理Http請求的
用在類上面

RequestMapping註解

用來配置Url的對映
可在類或者方法上
在類上時,該註解的對映作用在該類的所有方法上
需要兩個地址都訪問該註解的方法時,可以將地址用逗號隔開,例如:

@RequestMapping(value = {"/people","people2"},method = RequestMethod.GET)
public People people() {//返回的是物件的JSON字串
    return people;
}

另外還有@GetMapping,@PostMapping,@PutMapping等組合註解
@GetMapping(value=”/test”)其實就是相當於
@RequestMapping(value = “/test”,method = RequestMethod.GET)
可以看一下GetMapping註解的實現:

...
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(
    method = {RequestMethod.GET}
)
public @interface GetMapping {
    @AliasFor(
        annotation = RequestMapping.class
    )
    String name() default "";

   ...
}

可以看到,GetMapping註解繼承了RequestMapping註解,並且對於RequestMapping註解中的method屬性有一個GET的賦值
所以囖,一目明瞭。

RestController註解

Spring4之後新加的註解,相當於@Controller和@ResponseBody註解的配合使用。
可以直接返回json字串
比如上一篇部落格使用的,直接在Controller返回一個類物件,在前臺看到的是json字串
可以看下該註解的原始碼:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
    String value() default
""; }

PathVariable註解

獲取url中的引數。
例如:

    @GetMapping(value = "/getId/{id}")
    public Integer getPeople(@PathVariable(value = "id")Integer ida) {
        return ida;
    }

我特意將變數命名為ida以區分url和註解中的id。

RequestParam註解

獲取請求引數的值
例如:

    @GetMapping(value = "/getName")
    public String getPeople(@RequestParam(value = "name")String nameStr) {
        return nameStr;
    }

不做過多解釋啦,學過spring和springmvc的朋友早就懂了的。
其實RequestParam註解也可以省略不寫的,這個時候,url傳進來的引數就需要和變數名對應上了

還可以給引數設定預設值,可以這樣使用:

    /**
     * @RequestParam
     * required-false  表示不是必須傳的
     * defaultValue  這個就是引數的預設值,但是注意,這裡的值必須是字串
     * @param nameStr
     * @return
     */
    @GetMapping(value = "/say")
    public String say(@RequestParam(value = "name",required = false,defaultValue = "0") String nameStr) {
        return nameStr;
    }

這篇挺簡單的,沒有什麼多的東西,就沒啥程式碼了,我在後面把那個Controller類貼出來。
建議初學的先從前面的該類部落格看

package cn.chenhaoxiang;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * Created with IntelliJ IDEA.
 * User: 陳浩翔.
 * Date: 2017/12/25.
 * Time: 下午 9:44.
 * Explain:
 */
@RestController
public class HelloController {
    @Autowired
    private People people;
    @RequestMapping(value = {"/people","people2"},method = RequestMethod.GET)
    public People people() {//返回的是物件的JSON字串
        return people;
    }

    @GetMapping(value = "/getId/{id}")
    public Integer getId(@PathVariable(value = "id")Integer ida) {
        return ida;
    }

    @GetMapping(value = "/getName")
    public String getName(@RequestParam(value = "name")String nameStr) {
        return nameStr;
    }

    @GetMapping(value = "/getNameStr")
    public String getNameStr(String nameStr) {//url傳進來的引數需要和變數名對應上
        return nameStr;
    }

    /**
     * @RequestParam
     * required-false  表示不是必須傳的
     * defaultValue  這個就是引數的預設值,但是注意,這裡的值必須是字串
     * @param nameStr
     * @return
     */
    @GetMapping(value = "/say")
    public String say(@RequestParam(value = "name",required = false,defaultValue = "0") String nameStr) {
        return nameStr;
    }

}

本文章由[諳憶]編寫, 所有權利保留。
歡迎轉載,分享是進步的源泉。