Spring注解大全,加笔记
Spring注解
知识点1:@Configuration
名称 | @Configuration |
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 设置该类为spring配置类 |
属性 | value(默认):定义bean的id |
知识点2:@Component等
名称 | @Component/@Controller/@Service/@Repository |
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 设置该类为spring管理的bean |
属性 | value(默认):定义bean的id |
知识点3:@ComponentScan
名称 | @ComponentScan |
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 设置spring配置类扫描路径,用于加载使用注解格式定义的bean |
属性 | value(默认):扫描路径,此路径可以逐层向下扫描 |
- 记住@Component、@Controller、@Service、@Repository这四个注解
- applicationContext.xml中
<context:component-san/>
的作用是指定扫描包路径,注解为@ComponentScan - @Configuration标识该类为配置类,使用类替换applicationContext.xml文件
知识点4:@Scope
名称 | @Scope |
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 设置该类创建对象的作用范围 可用于设置创建出的bean是否为单例对象 |
属性 | value(默认):定义bean作用范围, 默认值singleton(单例),可选值prototype(非单例) |
知识点5:@PostConstruct
名称 | @PostConstruct |
类型 | 方法注解 |
位置 | 方法上 |
作用 | 设置该方法为初始化方法 |
属性 | 无 |
知识点6:@PreDestroy
名称 | @PreDestroy |
类型 | 方法注解 |
位置 | 方法上 |
作用 | 设置该方法为销毁方法 |
属性 | 无 |
知识点7:@Autowired
名称 | @Autowired |
类型 | 属性注解 或 方法注解(了解) 或 方法形参注解(了解) |
位置 | 属性定义上方 或 标准set方法上方 或 类set方法上方 或 方法形参前面 |
作用 | 为引用类型属性设置值 |
属性 | required:true/false,定义该属性是否允许为null |
知识点8:@Qualifier
名称 | @Qualifier |
类型 | 属性注解 或 方法注解(了解) |
位置 | 属性定义上方 或 标准set方法上方 或 类set方法上方 |
作用 | 为引用类型属性指定注入的beanId |
属性 | value(默认):设置注入的beanId |
知识点9:@Value
名称 | @Value |
类型 | 属性注解 或 方法注解(了解) |
位置 | 属性定义上方 或 标准set方法上方 或 类set方法上方 |
作用 | 为 基本数据类型 或 字符串类型 属性设置值 |
属性 | value(默认):要注入的属性值 |
知识点10:@PropertySource
名称 | @PropertySource |
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 加载properties文件中的属性值 |
属性 | value(默认):设置加载的properties文件对应的文件名或文件名组成的数组 |
知识点11:@Bean
名称 | @Bean |
类型 | 方法注解 |
位置 | 方法定义上方 |
作用 | 设置该方法的返回值作为spring管理的bean |
属性 | value(默认):定义bean的id |
知识点12:@Import
名称 | @Import |
类型 | 类注解 |
位置 | 类定义上方 |
作用 | 导入配置类 |
属性 | value(默认):定义导入的配置类类名, 当配置类有多个时使用数组格式一次性导入多个配置类 |
bean相关
依赖注入相关
知识点13:@EnableAspectJAutoProxy
名称 | @EnableAspectJAutoProxy |
类型 | 配置类注解 |
位置 | 配置类定义上方 |
作用 | 开启注解格式AOP功能 |
知识点14:@Aspect
名称 | @Aspect |
类型 | 类注解 |
位置 | 切面类定义上方 |
作用 | 设置当前类为AOP切面类 |
知识点15:@Pointcut
名称 | @Pointcut |
类型 | 方法注解 |
位置 | 切入点方法定义上方 |
作用 | 设置切入点方法 |
属性 | value(默认):切入点表达式 |
知识点16:@Before
名称 | @Before |
类型 | 方法注解 |
位置 | 通知方法定义上方 |
作用 | 设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法前运行 |
知识点18:@After
名称 | @After |
类型 | 方法注解 |
位置 | 通知方法定义上方 |
作用 | 设置当前通知方法与切入点之间的绑定关系,后置通知,在原始方法运行之后执行 |
知识点19:@Around
名称 | @Around |
类型 | 方法注解 |
位置 | 通知方法定义上方 |
作用 | 设置当前通知方法与切入点之间的绑定关系,环绕通知,在原始方法运行的前后执行 |
知识点20:@AfterReturning
名称 | @AfterReturning |
类型 | 方法注解 |
位置 | 通知方法定义上方 |
作用 | 设置当前通知方法与切入点之间的绑定关系,返回后通知,在原始方法执行完毕后运行,且原始方法执行过程中未出现异常现象 |
知识点21:@AfterThrowing
名称 | @AfterThrowing |
类型 | 方法注解 |
位置 | 通知方法定义上方 |
作用 | 设置当前通知方法与切入点之间的绑定关系,抛出异常后通知,在原始方法执行过程中出现异常后运行 |
知识点22:@EnableTransactionManagement
名称 | @EnableTransactionManagement |
类型 | 配置类注解 |
位置 | 配置类定义上方 |
作用 | 设置当前Spring环境中开启注解式事务支持 |
知识点23:@Transactional
名称 | @Transactional |
类型 | 接口注解 类注解 方法注解 |
位置 | 业务层接口上方 业务层实现类上方 业务方法上方 |
作用 | 为当前业务层方法添加事务(如果设置在类或接口上方则类或接口中所有方法均添加事务) |
知识点24:@CrossOrigin
名称 | @CrossOrigin |
类型 | 类注解 |
位置 | 业务层Controller上方 |
作用 | 解决跨域问题 |
SpringMvc注解
知识点1:@Controller
名称 | @Controller |
类型 | 类注解 |
位置 | SpringMVC控制器类定义上方 |
作用 | 设定SpringMVC的核心控制器bean |
知识点2:@RequestMapping
名称 | @RequestMapping |
类型 | 类注解或方法注解 |
位置 | SpringMVC控制器类或方法定义上方 |
作用 | 设置当前控制器方法请求访问路径 |
相关属性 | value(默认),请求访问路径 |
知识点3:@ResponseBody
名称 | @ResponseBody |
类型 | 类注解或方法注解 |
位置 | SpringMVC控制器类或方法定义上方 |
作用 | 设置当前控制器方法响应内容为当前返回值,无需解析 |
知识点4:@RequestParam
名称 | @RequestParam |
类型 | 形参注解 |
位置 | SpringMVC控制器方法形参定义前面 |
作用 | 绑定请求参数与处理器方法形参间的关系 |
相关参数 | required:是否为必传参数 defaultValue:参数默认值 |
知识点5:@EnableWebMvc
名称 | @EnableWebMvc |
类型 | 配置类注解 |
位置 | SpringMVC配置类定义上方 |
作用 | 开启SpringMVC多项辅助功能 |
@RequestBody与@RequestParam区别
- 区别
- @RequestParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】
- @RequestBody用于接收json数据【application/json】
- 应用
- 后期开发中,发送json格式数据为主,@RequestBody应用较广
- 如果发送非json格式数据,选用@RequestParam接收请求参数
知识点6:@DateTimeFormat
名称 | @DateTimeFormat |
类型 | 形参注解 |
位置 | SpringMVC控制器方法形参前面 |
作用 | 设定日期时间型数据格式 |
相关属性 | pattern:指定日期时间格式字符串 |
知识点7:@PathVariable
名称 | @PathVariable |
类型 | 形参注解 |
位置 | SpringMVC控制器方法形参定义前面 |
作用 | 绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应 |
知识点8:@RestController
名称 | @RestController |
类型 | 类注解 |
位置 | 基于SpringMVC的RESTful开发控制器类定义上方 |
作用 | 设置当前控制器类为RESTful风格, 等同于@Controller与@ResponseBody两个注解组合功能 |
知识点9:@GetMapping @PostMapping @PutMapping @DeleteMapping
名称 | @GetMapping @PostMapping @PutMapping @DeleteMapping |
类型 | 方法注解 |
位置 | 基于SpringMVC的RESTful开发控制器方法定义上方 |
作用 | 设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作, 例如@GetMapping对应GET请求 |
相关属性 | value(默认):请求访问路径 |
知识点11:@ControllerAdvice
名称 | @ControllerAdvice |
类型 | 类注解 |
位置 | Rest风格开发的控制器增强类定义上方 |
作用 | 为Rest风格开发的控制器类做增强 |
知识点10:@RestControllerAdvice
名称 | @RestControllerAdvice |
类型 | 类注解 |
位置 | 这是一个增强的 Controller |
作用 | 全局异常处理,全局数据绑定,全局数据预处理 |
知识点11:@ExceptionHandler
名称 | @ExceptionHandler |
类型 | 方法注解 |
位置 | 专用于异常处理的控制器方法上方 |
作用 | 设置指定异常的处理方案,功能等同于控制器方法, 出现异常后终止原始控制器执行,并转入当前方法执行 |
Lombok常见的注解有:
@Setter:为模型类的属性提供setter方法
@Getter:为模型类的属性提供getter方法
@ToString:为模型类的属性提供toString方法
@EqualsAndHashCode:为模型类的属性提供equals和hashcode方法
@Data:是个组合注解,包含上面的注解的功能
@NoArgsConstructor:提供一个无参构造函数
@AllArgsConstructor:提供一个包含所有参数的构造函数
Lombok的注解还有很多,上面标红的三个是比较常用的,其他的大家后期用到了,再去补充学习。
mybatisplus注解
知识点1:@TableField
名称 | @TableField |
类型 | 属性注解 |
位置 | 模型类属性定义上方 |
作用 | 设置当前属性对应的数据库表中的字段关系 |
相关属性 | value(默认):设置数据库表字段名称 exist:设置属性在数据库表字段中是否存在,默认为true,此属性不能与value合并使用 select:设置属性是否参与查询,此属性与select()映射配置不冲突 |
知识点2:@TableName
名称 | @TableName |
类型 | 类注解 |
位置 | 模型类定义上方 |
作用 | 设置当前类对应于数据库表关系 |
相关属性 | value(默认):设置数据库表名称 |
知识点3:@TableLogic
名称 | @TableLogic |
类型 | 属性注解 |
位置 | 模型类中用于表示删除字段的属性定义上方 |
作用 | 标识该字段为进行逻辑删除的字段 |
相关属性 | value:逻辑未删除值 delval:逻辑删除值 |
知识点4:@TableId
名称 | @TableId |
类型 | 属性注解 |
位置 | 模型类中用于表示主键的属性定义上方 |
作用 | 设置当前类中主键属性的生成策略 |
相关属性 | value(默认):设置数据库表主键名称 type:设置主键属性的生成策略,值查照IdType的枚举值 |
知识点5:@MapperScan
名称 | @MapperScan |
类型 | 类注解 |
位置 | 模型类定义上方 |
作用 | 扫描mapper包下的全部mapper接口 |
相关属性 | value(默认):设置数据库表主键名称 |
SpringBoot注解
知识点1:@SpringBootApplication
名称 | @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) |
类型 | 启动类注解 |
位置 | 定义启动类上方 |
作用 | 默认不去加载数据库配置 |
相关属性 | exclude = DataSourceAutoConfiguration.class |
知识点4:@CrossOrigin
名称 | @CrossOrigin |
类型 | 类注解 |
位置 | Controller类上方 |
作用 | 解决跨域问题 |
相关属性 |
Redis注解
知识点1:@Cacheable
名称 | @Cacheable |
类型 | 方法注解 |
位置 | 用在需要使用缓存的Controller接口上方 |
作用 | 根据方法对其返回结果进行缓存,下次请求时,如果缓存存在,则直接读取缓存数据返回;如果缓存不存在,则执行方法,并把返回的结果存入缓存中。一般用在查询方法上。 |
value | value(默认):缓存名,必填,它指定了你的缓存存放在哪块命名空间 |
cacheNames | 与 value 差不多,二选一即可 |
key | 可选属性,可以使用 SpEL 标签自定义缓存的key |
知识点2:@CachePut
名称 | @CachePut |
类型 | 方法注解 |
位置 | 用在需要使用缓存的Controller接口上方 |
作用 | 使用该注解标志的方法,每次都会执行,并将结果存入指定的缓存中。其他方法可以直接从响应的缓存中读取缓存数据,而不需要再去查询数据库。一般用在新增方法上。 |
value | 缓存名,必填,它指定了你的缓存存放在哪块命名空间 |
cacheNames | 与 value 差不多,二选一即可 |
key | 可选属性,可以使用 SpEL 标签自定义缓存的key |
知识点3:@CacheEvict
名称 | @CachePut |
类型 | 方法注解 |
位置 | 用在需要使用缓存的Controller接口上方 |
作用 | 使用该注解标志的方法,会清空指定的缓存。一般用在更新或者删除方法上 |
value | 缓存名,必填,它指定了你的缓存存放在哪块命名空间 |
cacheNames | 与 value 差不多,二选一即可 |
key | 可选属性,可以使用 SpEL 标签自定义缓存的key |
allEntries | 是否清空所有缓存,默认为 false。如果指定为 true,则方法调用后将立即清空所有的缓存 |
beforeInvocation | 是否在方法执行前就清空,默认为 false。如果指定为 true,则在方法执行前就会清空缓存 |
Spring cloud 注解
Nacos注解
知识点1:@EnableDiscoveryClient
名称 | @EnableDiscoveryClient |
类型 | 启动类注解 |
位置 | 在客户端微服务启动类添加注解 |
作用 | 启动微服务Nacos注册中文 |
相关属性 |
知识点2:@EnableFeignClients
名称 | @EnableDiscoveryClient |
类型 | 调用端启动类注解 |
位置 | 在调用端微服务启动类添加注解 |
作用 | 调用端服务调用 |
相关属性 |
知识点2:@FeignClient(“service-vod”)
名称 | @FeignClient(“service-vod”) |
类型 | 调用类注解 |
位置 | 调用类类上 |
作用 | 指定调用服务名称 |
相关属性 | value(默认):调用服务名称 |
知识点3:@RefreshScope
名称 | @RefreshScope |
类型 | nacos热部署注解 |
位置 | 类上 |
作用 | nacos统一配置,配置类注解 |
相关属性 |