Spring Boot实战清华版 相关注解

 

Java注解的定义与使用

 

使用@interface定义一个注解:

Spring Boot实战清华版 相关注解

使用注解标记类:

Spring Boot实战清华版 相关注解

 


 

元注解

 

给自定义注解(n.)进行注解(v.)的注解(n.)。

 

1. @Retention:指定注解的存在时间。

RetentionPolocy.SOURCE 源码级别

RetentionPolocy.CLASS 编译级别

RetentionPolocy.RUNTIME 运行级别

 

2. @Documented: 被注解的内容提取成文档

 

3. @Traget: 注解的适用范围

ElementType.FIELD 字段

ElementType.METHOD 方法

ElementType.PARAMETER 参数

ElementType.CONSTRUCTOR 构造器

ElementType.LOCAL_VARIABLE 局部变量

ElementType.TYPE 类型

ElementType.ANNOTATION_TYPE 注解类型

ElementType.PACKAGE 包

 

4. @Inherited: 父类标记,子类自动继承

 

Spring Boot实战清华版 相关注解

 

5. @Repeatable: 可重复使用的注解

 

Spring Boot实战清华版 相关注解

 


 

给注解添加域字段 

Spring Boot实战清华版 相关注解

这里id和msg就是域字段

Spring Boot实战清华版 相关注解

可以通过键值对的形式赋值。

Spring Boot实战清华版 相关注解

可以通过default指定字段的默认值。

 


 

Java预存注解

 

@Deprecated : 表示源码已过期

@SuppressWarnings : 压制报警

@Override : 重写方法

@SafeVarargs: 阻止不安全参数

@FunctionalInterface函数式接口

 


 

Spring管理Bean的方式

 

1. 通过xml配置文件进行配置。

2. 通过注解自动扫描

3. 使用Java Config类

 

一般优先级, 2 > 3 > 1

 


 

Spring基础注解

 

1. @Component : 注册为一个Bean

2. @Controller: 注册为控制器

3. @Service:标记为业务逻辑类

4. @Repository:标记为DAO类

5. @Resource: 基于名称注入Bean实例

 


 

Spring常见注解

 

@Autowired: 根据类型自动绑定,当出现多个实现时,使用@Qualifier标记进行区分

@Resource:默认使用名称注入,优先注入@Primary注解的实现。

@PreDestory:销毁前执行

@PostConstruct:构造后执行

@Inject:同@Autowired

@Named:同@Component

@Scope:指定生命周期:singleton、prototype、request、session、global session,默认singleton

@RequestMapping:映射请求

@PathVariable:url请求路由参数

 

Spring Boot实战清华版 相关注解

@RequestParam:请求参数

Spring Boot实战清华版 相关注解

@RequestBody:请求体转实体类

@ResponseBody:响应转字符串

@Param:参数注解

@JoinTable:连接表

@Transactional:开启事务

@Syschronized:同步锁

@ModeAttribute:将参数保存到Model

@Cacheable:缓存返回值

@CacheFlush:刷新缓存

@SessionAttributes:将数据存入session

@InitBinder:绑定器

@Required:必须

@Conditional:条件创建Bean

Spring Boot实战清华版 相关注解

@Profile:模式**机制

@EnableAspectJAutoProxy:自动**动态代理

 


 

Spring Boot注解

 

@SpringBootApplication:等价于@Configuration + @EnableAutoConfiguration + @ComponentScan

@RestController:等价于@Controller + @ResponseBody

@JsonBackReference:解决无限递归

@ReposotoryRestResource:创建Rest节点

@Import:导入其他配置类

@ImportResource:导入xml配置

@Bean:标记返回值注册为bean

@Value:注入值

 


 

JPA注解

 

@Entity:实体类

@Table(name = "xxx"):对应的表名称xxx

@MappedSuperclass用于在父类中定义子类公用的字段,如id、创建时间等,与@Entity和@Table互斥

@Column进行数据库与字段的映射,包含name(对应的数据库列名)、unique(唯一)、nullable(可空)、table(表名)、length(长度,用于varchar)、precision(精度,总长度)、scale(精度,位数)几种属性

@Id:主键

@GeneratedValue:用于主键的生成策略,

GenerationType.SEQUENCE:通过序列产生

GenerationType.IDENTITY:自增

GenerationType.AUTO 自动

@Transient:忽略本字段

@JsonIgnore:反序列化忽略

@JoinColumn(name="xxx"):指向另外一张表的外键。

@OneToOne:一对一

@OneToMany:一对多

@ManyToOne:多对一

@ManyToMany:多对多

 


 

异常处理注解

 

@ControllerAdvice:统一处理异常,一般用于全局异常处理

@ExceptionHandler(xxxException.class):用于方法上,表示针对xxxException异常,使用该方法处理

 


 

其他

 

@NoArgsConstructor:无参构造器

@AllArgsConstructor:全部参数的构造器