天天看点

第三章、spring与springboot注解(二)

springboot其实是spring家族的一个成员,当然继承了所有spring和springMVC的注解,这里一起做一个总结。

二、控制层注解:@Controller

1、@Controller:用于定义控制器类,在spring 项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping

@Controller //加上此注解表示一个控制器,表示此类的作用为处理后端请求
@RequestMapping("/test") //一般和此注解一并使用,表示请求的前缀
public class DemoController { 
    @RequestMapping("/demoInfo")
    public void test(){//此方法可以看做一个后端请求通过项目+/demoInfo/test来访问
        System.out.println(1);
    }
}
           

2、@RequestMapping("/demoInfo"):提供路由信息,负责URL到Controller中的具体函数的映射,参数可以写具体访问路径,如上;

3、@RequestMapping(value="/demoInfo",method={RequestMethod.GET,RequestMethod.POST}),指定URL请求方法,默认为get和post都可以请求,指定后只能使用该种请求方式;

4、@RequestParam(value="demoInfo",required=false):使用在具体参数前,获取传入的参数,参数名为value,与request.getParameter("xx")相比,此注解参数默认必传,如果类型不正确,会报出 类型无法转换异常,当然也可以设置参数不必传;

5、@PathVariable和上面@RequestParam一样用来修饰参数,此注解的意思是:使用URL中的用大括号包含的同名变量作为参数传入;

@Controller //加上此注解表示一个控制器,表示此类的作用为处理后端请求
@RequestMapping("/test") //一般和此注解一并使用,表示请求的前缀
public class DemoController { 
    @RequestMapping("/demoInfo/{id}")
    public void test(@PathVariable("id") int id){
        System.out.println(1);
    }
}
           

6、@ResponseBody:使用在每个@RequestMapping头,表示该方法的返回结果直接写入HTTP response body中,

 一般在异步获取数据时使用,用于构建RESTful的api。  在使用@RequestMapping后,返回值通常解析为跳转路径,加上@Responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。 比如异步获取json数据,加上@Responsebody后,其内部会有一个转化器,将返回的数据转换成json格式,会直接返回json数据。 该注解一般会配合@RequestMapping一起使用;

@Controller 
@RequestMapping("/test") 
public class DemoController { 
    @RequestMapping("/demoInfo")
    @ResponseBody
    public void test(){
      
    }
}
           

7、@RestController:功能和上面的Controller类似,不过此注解还包含了另一个注解:@ResponseBody,等同于@[email protected],也就意味此注解将所有此类中所有路由映射都加上@ResponseBody

@RestController 
@RequestMapping("/test") 
public class DemoController { 
  
}
           

继续阅读