spring常用注解

本文详细解析了Spring MVC框架中的关键注解,如@ModelAttribute、@RequestBody、@PathVariable、@RequestParam等,阐述了它们在处理不同请求数据格式时的作用与用法。

参数绑定注解

@ModelAttribute

传输格式必须为x-www-form-urlencoded,后台才会自动注入实体类
在这里插入图片描述

@RequestBody

传输格式为json,会自动根据json的格式去匹配接收的实体.一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据(当然x-www-form-urlencoded也是可以处理的),不能处理二进制流的形式。比如说from表单默认提交方式(multipart/form-data

@PathVariable

获取URL中的参数

@Controller 
@RequestMapping("/owners/{ownerId}") 
public class RelativePathUriTemplateController { 
  //获取ownerId和petId 
  @RequestMapping("/pets/{petId}") 
  public void findPet(@PathVariable String ownerId,@PathVariable String petId, Model model) {     
 
  } 
} 
@RequestParam
  • 常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String–> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;

  • 用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST;

  • 该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;

URL:xxx/get?username=xxx
请求方式:get

@Controller 
public class RelativePathUriTemplateController { 
  @RequestMapping("/get") 
  public void findPet(@RequestParam("username")string username, Model model) {     
   //xxx
  } 
} 
当前台界面使用GET或POST方式提交数据时,数据编码格式由请求头的ContentType指定。分为以下几种情况:
  1. application/x-www-form-urlencoded,这种情况的数据@RequestParam、@ModelAttribute可以处理,@RequestBody也可以处理。
  2. multipart/form-data,@RequestBody不能处理这种格式的数据。(form表单里面有文件上传时,必须要指定enctype属性值为multipart/form-data,意思是以二进制流的形式传输文件。)
  3. application/json、application/xml等格式的数据,必须使用@RequestBody来处理。
Spring常用注解
  • @SpringBootApplication,springboot的核心注解,用于开启自动配置,等效于@Configuraion、@ComponentScan和@EnableAutoConfiguration三个注解一起使用。
  • @RestController,表示是servlet控制器,是@Controller和ResponseBody的注解合集,支持restful风格的写法,请求的返回的数据格式为json,适合专门做后台服务接口开发,在4.0版本前不支持该注解。
  • @RequestMapping:提供路由信息,负责URL到Controller中的具体函数的映射。
  • @ResponseBody: 将请求返回的结果为json形式。
  • @Controller:用于定义控制器类。
  • @Service: 表示Service层。
  • @Repository: 表示数据关系映射层。
  • @ComponentScan: 将该类自动发现扫描组件。
  • @Bean: 用在方法上来生成一个bean示例,交给Spring容器托管。
  • @Component: 表示组件。
  • @Configuration: 相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。
  • @EnableAutoConfiguration: Spring Boot自动配置(auto-configuration):尝试根据你添加的jar依赖自动配置你的Spring应用。
  • @ConfigurationProperties: 将配置文件的内容封装成实体类对应的属性。可以把@ConfigurationProperties直接定义在@Bean的注解上,此时bean实体类就不用@Component和@ConfigurationProperties注解了。
  • @Profiles: 提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。
  • @Autowired: 自动导入依赖的bean。
  • @Qualifier: 当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。@Qualifier限定描述符除了能根据名字进行注入。
  • @Resource: 默认byName,与@Autowired干类似的事,找不到再根据类型找,使用@Resource(name=”name”,type=”type”)
  • @Import: 用来导入其他配置类。
  • @ImportResource:用来加载xml配置文件。
  • @RequestBody: 处理post、put等请求时数据解析。
  • @RequestParam: 获取请求参数,用在方法的参数前。
  • @PathVariable: 路径变量。
  • @Value: 获取配置application文件的内容。
  • @ControllerAdvice:包含@Component。可以被扫描到。统一处理异常。
  • @ExceptionHandle(Exception.class):用在方法上面表示遇到这个异常就执行以下方法。
  • @ComponentScan:我们经常使用 @ComponentScan 注解搜索beans,并结合 @Autowired 构造器注入。
  • @Profiles :Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。任何@Component或@Configuration都能被@Profile标记,从而限制加载它的时机。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值