来自: https://cloud.tencent.com/developer/article/1802332
元注解
用来修饰注解的注解
@Target(ElementType.) 描述注解的使用范围(即:被修饰的注解可以用在什么地方)
取值(ElementType)有:
1.CONSTRUCTOR:用于描述构造器
2.FIELD:用于描述域
3.LOCAL_VARIABLE:用于描述局部变量
4.METHOD:用于描述方法
5.PACKAGE:用于描述包
6.PARAMETER:用于描述参数
7.TYPE:用于描述类、接口(包括注解类型)或enum声明
@Retention(RetentionPolicy.) 描述注解的生命周期(即:被修饰的注解被保留到何时)
取值(RetentionPoicy)有:
1.SOURCE:在源文件中有效(即源文件保留)
2.CLASS:在class文件中有效(即class保留)
3.RUNTIME:在运行时有效(即运行时保留)
@Documented 会被javadoc工具动态提取成文档。
@Inherited 允许子类继承父类中的注解。
Spring注解
SpringMVC注解
这些注解描述的类 Spring会创建原生对象或代理对象并交给 IOC容器 管理,这些对象称之为bean。用时直接 @Autowired 注入即可。
@Mapper 描述数据层 (Mapper)
@Service 描述业务层 (Service)
@Repository 标识持久层 / 数据访问层组件(Dao)
@Component 可以描述各种组件(当组件不好归类时)
@RestController 描述控制层(Controller)并返回json数据类型,但不会再执行SpringMVC中的视图解析器。 /* 该注解等同于:@Controller + @ResponseBody */
@Controller 描述控制层 接收用户请求 执行 视图解析器 (进行路径拼接 前缀+后缀 ViewResolver解析 view渲染)。
@ResponseBody 将java对象转为json格式的数据。
IOC容器注解
IOC(Inversion of Control) 是控制反转,也叫依赖注入(DI)。
把复杂系统分解成相互合作的对象,这些对象类通过封装以后,内部实现对外部是透明的,从而降低了解决问题的复杂度,而且可以灵活地被重用和扩展。
简单来说:IOC意味着将你设计好的对象交给容器控制,需要的时候通过注解来注入(获取),而不是传统的在你的对象内部直接控制(new 对象)。从而降低了程序的耦合性。
@Bean 描述 方法 的返回值 交给容器管理,不需要再手动调用该方法。
@Autowired 注入对象(按byType自动注入)
@Resource 注入对象(按byName自动注入)
@Value 注入普通类型属性。
如果容器中有多个相同类型的 bean,则框架将抛出 NoUniqueBeanDefinitionException, 以提示有多个满足条件的
bean 进行自动装配。程序无法正确做出判断使用哪一个时,可以使用以下注解:
- @Qualifier(“”) 在相同类型bean上命名后,可以按不同名称注入 配合@Autowired 使用。
- @Primary 当存在多个相同类型的 bean 时,首选被@Primary注解过的bean。
Bean的范围的注解:
@Scope(value=””) 默认生成的类是单例的。
取值(value) 有:
1.singleton :单例
2.prototype :多例
3.request :request域,需要在web环境
4.session :session域,需要在web环境
5.application:context域,需要在web环境
6.globalsession 集群环境的session域,需要在web环境
Bean的生命周期注解:
@PostConstruct 相当于init-method
@PreDestroy 相当于destroy-method
Spring启动类注解(开箱即用)
@SpringBootAppliction 用在启动类上,主要目的是开启自动配置 组合了:
1)@SpringBootConfiguration 定义了SpringBoot的配置类 通过@Configuration 来定义配置信息
2)@EnableAutoConfiguration 自动化配置, 该注解里面有@AutoConfigurationPackage 自动配置的包扫描 @Import调用选择器去加载pom.xml文件中的启动项
3)@ComponentScan 定义包扫描 指定路径 哪些包中的对象交给IOC容器管理。
请求Mapping注解
@RequestMapping("/xxx") 注解类上 通过"/xxx"来指定控制器可以处理哪些URL请求。
请求方式:
@GetMapping 通常注解查询方法
@PostMapping 通常注解增添保存方法
@DeleteMapping 通常注解删除方法
@PutMapping 通常注解更新方法
@PatchMapping 通常注解更新局部方法
动态赋值注解
@PathVariable 接收的url动态传给被注解的参数(restFull风格)
@RequestBody 将接收的json格式的数据转为java对象参数(适用于post请求)
@RequestParam(value=“接收的xxx”) 讲接收的xxx传给被注解的参数 (适用于post,get请求)
缓存注解
@EnableCaching 启动springboot工程中的内置缓存。
@Cacheable(value=“缓存值取名”) 把返回值进行缓存,缓存通过切面自动切入,可用用于方法或者类上。
参数 | 描述 |
---|---|
value | 名称 |
key | key |
condition | 可判断key条件 |
@CacheEvict(value=“需要清空的缓存名”) 方法是一个清缓存的切入点方法,当这个方法被调用后,即会清空缓存。
参数 | 描述 |
---|---|
value | 名称 |
key | key |
condition | 缓存的条件,可以为空 |
allEntries | 是否清空所有缓存内容 |
beforeInvocation | 是否在方法执行前就清空 |
AOP切片注解
@Pointcut(“@annotation(被切入方法的地址)”) 设置切入点
@Before(“pointCut()”) 在切点方法前执行
@After(“pointCut()”) 在切点方法后执行
@Around(“pointCut()”) 在切点方法外环绕执行,需要执行ProceedingJoinPoint对象的proceed方法来加载需要切入的方法。
其他
@ExceptionHandler 可以用来统一处理方法抛出的异常, 当某个方法(异常处理方法)被这个注解修饰时, 那么这个异常处理方法就会处理其他方法抛出的异常
Lombok注解
@Data 动态添加get/set/toString/equals/hashcode/构造方法 适用于pojo / VO该注解等同于:@Getter + @Setter + ToString + @EqualsAndHashCode + @RequiredArgsConstructor
@Value 把所有的变量都设成 final 修饰 和 @Data相似
@AllArgsConstructor 添加构造方法
@NoArgsConstructor 添加无参构造
@sfl4g 自动生成该类的 log 静态常量, 有该注解后可以:
log.debug("debug");
log.info("info");
log.error("error");
log.warn("warn");
@Accessors(chain = true) 引用链式加载方式 方便做插入操作。
@EqualsAndHashCode(callSuper = false)这个注解的作用就是自动的给model bean实现equals方法和hashcode方法。
MybatisPlus注解
@TableName(value=””, resultMap=””) 表名与实体类名不一致时 需要在实体类上加入注解”value=表名”,xml 中 resultMap 的 id 不一致时需要赋值。 @TableId(value= “”, type = IdType.AUTO) 表示主键名/属性。@IdType的值有:
AUTO 数据库自增
INPUT 自行输入
ID_WORKER 分布式全局唯一ID 长整型类型 UUID 32位
UUID字符串
NONE 无状态
ID_WORKER_STR 分布式全局唯一ID 字符串类型
@TableId 在主键上启用, 将该字段映射到数据库表的主键, value是数据库中表的主键名称, type表示主键的类型@TableId(value = "id", type = IdType.AUTO)
, 主键类型(枚举类型)有:
- AUTO, 自增主键
- NONE, 表示未设置主键类型
- INPUT, 开发者手动输入
- ASSIGN_ID, 使用雪花算法, 必须为Long或者字符串, 对应表为BigInt和VARCHAR
- ASSIGN_UUID, 没有中划线的UUID, 主键类型为String, 表字段为VARCHAR(32)
@TableField(“…”) 注解新增属性,如果字段名与属性一致(已开启驼峰规则),则可省略,否则加入”exist=false”参数。
参数 | 描述 |
---|---|
value | 字段值,如果字段名与属性一致(已开启驼峰规则)则可省略 |
update | 预处理 set 字段自定义注入 |
condition | 预处理 WHERE 实体条件自定义运算规则 |
exist | 是否为数据库表字段 |
fill | 字段填充 |
@TableLogic 表字段逻辑处理注解(逻辑删除)
其他注解
Async异步注解
@Async 注解描述的方法为一个异步切入点方法(声明该方法执行异步),启动类上需要加上@EnableAsync才能使其生效。 这个方法会在切面通知方法中通过一个新的线程调用执行,由spring线程池提供。**@EnableAsync** 可以使用多线程 描述该类支持异步
注释注解
@param Dao层(Mapper)的注解,作用是用于传递多个参数 @return 说明该方法有返回值。只是起到一个说明作用
其他注解
不同的的业务文件放在不同的配置文件yml中,所以需要动态加载配置文件**@PropertySource(value=“classpath:/…”,ebcidubg=“UTF-8”)** 动态加载配置文件 为了给定义的变量赋值 @Select(“…”) 简单的sql语句可以用该注解直接在方法上描述 @CrossOrigin 此注解描述的Controller,表示允许跨域访问
欢迎在评论区中进行批评指正,转载请注明来源,如涉及侵权,请联系作者删除。