使用@interface定义一个注解:
使用注解标记类:
给自定义注解(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: 父类标记,子类自动继承
5. @Repeatable: 可重复使用的注解
这里id和msg就是域字段
可以通过键值对的形式赋值。
可以通过default指定字段的默认值。
@Deprecated : 表示源码已过期
@SuppressWarnings : 压制报警
@Override : 重写方法
@SafeVarargs: 阻止不安全参数
@FunctionalInterface函数式接口
1. 通过xml配置文件进行配置。
2. 通过注解自动扫描
3. 使用Java Config类
一般优先级, 2 > 3 > 1
1. @Component : 注册为一个Bean
2. @Controller: 注册为控制器
3. @Service:标记为业务逻辑类
4. @Repository:标记为DAO类
5. @Resource: 基于名称注入Bean实例
@Autowired: 根据类型自动绑定,当出现多个实现时,使用@Qualifier标记进行区分
@Resource:默认使用名称注入,优先注入@Primary注解的实现。
@PreDestory:销毁前执行
@PostConstruct:构造后执行
@Inject:同@Autowired
@Named:同@Component
@Scope:指定生命周期:singleton、prototype、request、session、global session,默认singleton
@RequestMapping:映射请求
@PathVariable:url请求路由参数
@RequestParam:请求参数
@RequestBody:请求体转实体类
@ResponseBody:响应转字符串
@Param:参数注解
@JoinTable:连接表
@Transactional:开启事务
@Syschronized:同步锁
@ModeAttribute:将参数保存到Model
@Cacheable:缓存返回值
@CacheFlush:刷新缓存
@SessionAttributes:将数据存入session
@InitBinder:绑定器
@Required:必须
@Conditional:条件创建Bean
@Profile:模式激活机制
@EnableAspectJAutoProxy:自动激活动态代理
@SpringBootApplication:等价于@Configuration + @EnableAutoConfiguration + @ComponentScan
@RestController:等价于@Controller + @ResponseBody
@JsonBackReference:解决无限递归
@ReposotoryRestResource:创建Rest节点
@Import:导入其他配置类
@ImportResource:导入xml配置
@Bean:标记返回值注册为bean
@Value:注入值
@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:全部参数的构造器