参数绑定注解
@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指定。分为以下几种情况:
- application/x-www-form-urlencoded,这种情况的数据@RequestParam、@ModelAttribute可以处理,@RequestBody也可以处理。
- multipart/form-data,@RequestBody不能处理这种格式的数据。(form表单里面有文件上传时,必须要指定enctype属性值为multipart/form-data,意思是以二进制流的形式传输文件。)
- 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标记,从而限制加载它的时机。