1、@RequestParam
定义:
@RequestParam
中的required属性默认为true(默认值也是true),代表该请求参数必须传递,如果不 传递将报错@RequestMapping("/simpleParam") public String simpleParam(@RequestParam(name = "name", required = false) String username, Integer age){ System.out.println(username+ ":" + age); return "OK"; }
@RequestParam(defaultValue="默认值")
//设置请求参数默认值作用:
在简单参数中使用:如果方法形参名称与请求参数名称不匹配,可以使用
@RequestParam
完成映射
2、@ResponseBody
@ResponseBody注解的作用是将controller的方法返回的对象,转换为json格式的数据返回给前端
- 类型:方法注解、类注解
- 位置:书写在Controller方法上或类上
- 作用:将方法返回值直接响应给浏览器
- 如果返回值类型是实体对象/集合,将会转换为JSON格式后在响应给浏览器
3、组合注解
@RestController = @Controller + @ResponseBody
类上有@RestController注解或@ResponseBody注解时:表示当前类下所有的方法返回值做为响应数据
- 方法的返回值,如果是一个POJO对象或集合时,会先转换为JSON格式,在响应给浏览器
4、IOC容器创建对象注解
注解 | 说明 | 位置 |
---|---|---|
@Controller | @Component的衍生注解 | 标注在控制器类上 |
@Service | @Component的衍生注解 | 标注在业务类上 |
@Repository | @Component的衍生注解 | 标注在数据访问类上(由于与mybatis整合,用的少) |
@Component | 声明bean的基础注解 | 不属于以上三类时,用此注解 |
注意事项:
- 声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写。
- 使用以上四个注解都可以声明bean,但是在springboot集成web开发中,声明控制器bean只能用@Controller。
5、@Autowired
@Autowired注解,默认是按照类型进行自动装配的(去IOC容器中找某个类型的对象,然后完成注入操作)
6、@Options
- 默认情况下,执行插入操作时,是不会主键值返回的。如果我们想要拿到主键值,需要在Mapper接口中的方法上添加一个Options注解,并在注解中指定属性useGeneratedKeys=true和keyProperty=“实体类属性名”
7、@Results
通过 @Results及@Result 进行手动结果映射,字段名和实体类属性名之间的对应关系
@Results({@Result(column = "dept_id", property = "deptId"),
@Result(column = "create_time", property = "createTime"),
@Result(column = "update_time", property = "updateTime")})
@Select("select id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time from emp where id=#{id}")
public Emp getById(Integer id);
8、@Param
在springBoot的1.x版本/单独使用mybatis(使用@Param注解来指定SQL语句中的参数名)
在编译时,生成的字节码文件当中,不会保留Mapper接口中方法的形参名称,而是使用var1、var2、…这样的形参名字,此时要获取参数值时,就要通过@Param注解来指定SQL语句中的参数名
9、@Slf4j
10、@PathVariable
在controller中接收请求路径中的路径参数
11、@ConfigurationProperties
都是用来注入外部配置的属性的
12、 @WebFilter 和@ServletComponentScan
配置过滤器:Filter类上加 @WebFilter 注解,配置拦截资源的路径。引导类上加 @ServletComponentScan 开启Servlet组件支持。
13、@RestControllerAdvice和@ExceptionHandler
@RestControllerAdvice注解:代表定义了一个全局异常处理器。
@ExceptionHandler:通过@ExceptionHandler注解当中的value属性来指定我们要捕获的是哪一类型的异常。
@RestControllerAdvice public class GlobalExceptionHandler { //处理异常 @ExceptionHandler(Exception.class) //指定能够处理的异常类型 public Result ex(Exception e){ e.printStackTrace();//打印堆栈中的异常信息 //捕获到异常之后,响应一个标准的Result return Result.error("对不起,操作失败,请联系管理员"); } }
@RestControllerAdvice = @ControllerAdvice + @ResponseBody
处理异常的方法返回值会转换为json后再响应给前端
14、@Transactional
@Transactional作用:就是在当前这个方法执行开始之前来开启事务,方法执行完毕之后提交事务。如果在这个方法执行的过程当中出现了异常,就会进行事务的回滚操作。
@Transactional注解:我们一般会在业务层当中来控制事务,因为在业务层当中,一个业务功能可能会包含多个数据访问的操作。在业务层来控制事务,我们就可以将多个数据访问操作控制在一个事务范围内。
15、@Configuration
16、@Scope
- 可以借助Spring中的@Scope注解来进行配置作用域
17、@Lazy
@Lazy //延迟加载(第一次使用bean对象时,才会创建bean对象并交给ioc容器管理)
18、 @EnableXxxxx注解
让第三方依赖自己指定bean对象和配置类
19、@JsonInclude
@JsonInclude(JsonInclude.Include.NON_NULL)
标记是jackson包提供的json序列化方法,已经集成于Springboot2.0中,此方法的配置意在可以对实体json序列化的时候进行对应的数值处理,
- 将该标记放在属性上,如果该属性为NULL则不参与序列化
- 如果放在类上边,那对这个类的全部属性起作用
- Include.Include.ALWAYS 默认
- Include.NON_DEFAULT 属性为默认值不序列化
- Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化
- Include.NON_NULL 属性为NULL 不序列化
@JsonInclude(JsonInclude.Include.ALWAYS)
——该注解不设定值的情况下,默认使用 ALWAYS
此注解适用于类标头,可以对实体类引用会自动按规则过滤实体类生成的json数据,也可以通过实现Serializable接口来标识此注解,用于对类的最终json结构进行过滤处理。