文章
发布于2020年7月14日
springboot项目中的一些注解
一、controller层的:
@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。
@ResponseBody注解的使用
@RequestMapping("/login") @ResponseBody public User login(User user){ return user; } User字段:userName pwd
那么在前台接收到的数据为:’{“userName”:“xxx”,“pwd”:“xxx”}’
带responsebody的都是ajax请求
二、
@Id @Id 标注用于声明一个实体类的属性映射为数据库的主键列。该属性通常置于属性声明语句之前,可与声明语句同行,也可写在单独行上。
@Id标注也可置于属性的getter方法之前
@RestController注解相当于@ResponseBody + @Controller合在一起的作用
@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面
若返回json等内容到页面,则需要加@ResponseBody注解
@GeneratedValue:
@GeneratedValue 用于标注主键的生成策略,通过strategy 属性指定。默认情况下,JPA 自动选择一个最适合底层数据库的主键生成策略:SqlServer对应identity,MySQL 对应 auto increment。
@GeneratedValue(generator = “UUID”) Oracle数据库的标志
三、自定义注解
异常内容 @IgnoreInMultipleResult
private String exception;
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface IgnoreInMultipleResult {
}
@Target 是Java的元注解,指修饰注解的注释之一,用来指定注解修饰类的哪个成员,加大括号表示一个数组,指被修饰的注解能用于多个不同的类成员。
@Target(ElementType。FIELD)
public @interface A{}
表示注解A只能用来修饰类中的Field
在实体类属性上面使用@jsonFormat注解,它只会在类似@ResponseBody返回json数据的时候,才会返回格式化的yyyy-MM-dd HH:mm:ss时间。
@JsonFormat(pattern = “yyyy-MM-dd”, timezone = “GMT+8”)
时间格式化注解
@JsonFormat注解是一个时间格式化注解,比如我们存储在mysql中的数据是date类型的,当我们读取出来封装在实体类中的时候,就会变成英文时间格式
,而不是yyyy-MM-dd HH:mm:ss这样的中文时间,
自定义排序注解
@OrderBy(“DESC”)private Date createTime;
封装
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface OrderBy {
String value() default “”;
}
RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
表示你的注解有一个名为 value 的可选参数。不设置的话默认为“”。如果没有后面的 default “”,则表示这是一个必须的参数。不指定的话会报错。
使用注解: @Lazy
效果:一般情况下,Spring容器在启动时会创建所有的Bean对象,使用@Lazy注解可以将Bean对象的创建延迟到第一次使用Bean的时候
引入步骤 在类上加入@Lazy或者@@Lazy(value=true)