Spring中常用注解总结

1.@Controller和@RestController

共同点:都是用来表示Spring中的某个类可以接收HTTP请求的。

不同点:@Controller标识一个Spring类是Spring MVC Controller处理器,@RestController是@Controller和@ResponseBody的结合体。

如果只使用@RestController注解controller则,无法返回jsp页面,配置视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容

例如:本来应该到success.jsp页面的,则其显示success.

如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。

如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

2.@Autowired和@Resouse的区别

@Autowired是Spring的自定义注解,@Resouse是jdk规范定义的注解。@Resouse相当于@Autowired。

@Autowired是Bytype自动注入,@Resouse默认是Byname自动注入。

@Resouse有两个非常重要的属性type和name,Spring将@Resouse注解的name属性解析为bean的名字,而type属性解析为bean的类型。如果使用name属性,则使用byName自动注入,使用type则使用byType自动注入

默认是byName注入。

@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用

3.接收参数的常用注解

拼接在url后面的传参形式:@PathVariable、@RequestParam、@Validated

接收request header部分的参数:@RequestHeader、@CookieValue

接收request body部分的参数:@RequestBody

@PathVariable用于接收restful方式的请求

eg:http://ip,port/qumy/test/1

@GetMapping("/test/{id}")
public String test(@PathVariable("id") long id){return null;}

@RequestParam用于接收params方式的请求。

eg:http://ip:port/qumy/test?id=1

 @GetMapping("/test")
   public String test(@RequestParam Long id) { return null; }

@Validated注解可以用一个模型来接收地址栏中的参数。

eg:http://ip:port/qumy/test?id=1

@GetMapping(value = "/test")
public String test(@Validated User user) { return null;}

@RequestHeader 注解,可以把Request请求header部分的值绑定到方法的参数上。

request header(请求头):

Host                    localhost:8080

Accept                  text/html,application/xhtml+xml,application/xml;q=0.9

Accept-Language         fr,en-gb;q=0.7,en;q=0.3

Accept-Encoding         gzip,deflate

Accept-Charset          ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive              300
@GetMapping("/test")
public String test(@RequestHeader("Accept-Encoding") String encoding)  { return null;}

@CookieValue 可以把Request header中关于cookie的值绑定到方法的参数上。

cookie: JSESSIONID=415A4AC178C59DACE0B2C9CA727CDD84

@GetMapping("/test")
public String test(@CookieValue("JSESSIONID") String cookie)  {return null;}

@RequestBody注解用来接收request的body中的参数,@RequestBody可以将多个参数放入到一个实体类或者Map中。

// 实体类
@PostMapping(value = "/test")
public String test(@RequestBody ParameterModel parameterModel) {
        return null;
}
// Map
@PostMapping(value = "/test)
public String test(@RequestBody Map<String, Object> paramMap) {
        return null;
}

4.后台接收List做批量操作

controller层

	@PostMapping("/delete")
    public AjaxResult delete(@RequestBody List<Integer> ids) {
        int delete = storeService.deleteByIds(ids);
        return toAjax(delete);
    }

mybatis层

 <update id="deleteByIds" parameterType="java.util.List" >
    update tp_store
    set deleted = 1
    where store_id in
    <foreach item="ids" collection="list" separator="," open="(" close=")" index="">  #{ids}
    </foreach>
  </update>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值