@Component 注解为Spring框架中定义的用于描述一般bean对象
@SpringBootTest SpringBoot工程中单元测试类必须要用此注解描述
@Autowired Spring中可以借助此注解来描述属性,用于告诉spring这个属性的值有spring注入
@Lazy 延迟对象实例的创建,用的时候再创建
@Scope("prototype") 多例作用域,每次从spring请求类的实例都会创建新的对象
@Scope("singleton") 默认作用域为单例作用域,此作用域通常会配合延迟加载使用
@PostConstruct//此注解用来描述方法为生命周期初始化方法,构造方法之前执行,可以在方法内部做初始化
@PreDestroy//此注解用来描述方法为生命周期销毁方法,对象销毁之前执行,可以进行一些资源释放操作
如果是单例作用域,生命周期初始化方法和生命周期销毁方法都会被执行,因为销毁时,是由spring容器负责,相反多例作用域是不会执行生命周期销毁方法,因为不是spring容器管理,当这个对象在内存中没有任何引用指向它的时候,GC触发时销毁。
@Qualifier("xxx") 需要配置Autowire注解使用,不能单独使用,用于指定要注入的bean的名字
@Repository此注解一般用于描述数据逻辑层的具体实现对象,此对象要交给spring管理
@Mapper注解由MyBatis提供,用于描述数据逻辑层接口,由MyBatis底层为接口创建实现类,并将其实现类的对象交给spring管理,Spring会为他管理的这个bean起个名字,默认为接口名,首字母小写,然后在实现类的内部基于sqlsession对象与数据库的会话。
@MapperScan("Dao接口所在的包")此注解是在SpringBoot项目中,为启动类添加的描述,此注解的作用是:扫描指定包下面的接口,系统底层也会产生对应的实现类。
@Controller此注解描述的对象为controller请求的处理器对象,我们通常称之为handler
@RequestMapping注解描述方法时用于定义请求url到handler中方法映射
@ResponseBody当使用此注解描述控制层的handler方法时,假如此方法的返回值为map或者pojo对象时,系统底层会将这样的转换为json格式字符串,然后响应到客户端
@DateTimeFormat注解指定可以接收的日期格式
@RestController相当于@Controller+@ResponseBody,描述handler类型,用于定义此类是一个Controller请求处理对象,同时类中所有方法都默认添加@ResponseBody注解
@DateTimeFormat注解指定可以接收的日期格式
@RequestParam注解用于描述方法参数,用于定义参数规则
1.方法参数变量的值,来自哪个请求参数
2.方法参数变量是否可以不传值,例如@RequestParam(required=true)
还有如果是用Map来封装请求数据的话,必须用这个注解描述才能取出数据。因为Map默认是封装响应数据的
@GetMapping描述方法是用于处理GET请求的
@RequestBody注解描述方法参数时客户端以post方式提交Json格式的数据
@RequestBody注解描述方法参数不能封装Get请求数据
@RequestBody注解不能同时描述两个参数
@PathVariable注解描述方法的参数变量时,表示这个参数的变量的值来自url中{}表达式给定的值
@param:早期mybatis版本相对比较低时,方法参数有多个,或者方法参数使用在了动态sql中,需要使用@param注解对参数进行描述
@PutMapping 一般应用于修改数据的请求
@PostMapping 一般应用于添加数据的请求
@DeleteMapping 一般应用于删除数据的请求
lombok提供的一些注解:
@Data此注解描述类时,在编译时会为此类生成get,set,toString,hashCode,equals等方法
@ToString提供重写的toString方法
@Setter提供set方法
@Getter提供get方法
@Slf4j:lombok发现类上有此注解时,会为此类创建一个日志对象,其变量为log
@AllArgsConstructor提供全参构造函数
@NoArgsConstructor提供无参构造函数
@ExceptionHandler描述的为一个controller中的异常处理方法
@ControllerAdvice此注解描述的类为全局异常处理类,在此类中可以定义多个异常处理方法
@RestControllerAdvice相当于@ResponseBody+@ControllerAdvice
AOP框架中的注解
@Pointcut注解用于定义切入点 bean(" spring容器中bean的名字 ")这个bean表达式为切入点表达式定义的一种语法,它描述的是某个bean或多个bean中所有方法的集合为切入点;缺点是不能精确到某一个具体方法
@Aspect注解描述的类型为切面对象类型,此切面中可以定义多个切入点和通知方法
@Around()注解描述的方法,会在切入点执行之前和之后执行
@Order注解可以用来设置切面的优先级
@EnableAsync注解用来描述启动类,在我们再次运行启动类的时候,底层会帮我们配置一个线程池。
@Async注解描述方法时,在spring中会认为这个是异步切入点方法,在这个切入点方法进行时,底层会通过通知方法获取线程池中的线程,来调用切入点方法。但是这个注解不能直接去描述有方法返回值的方法,因为我们并不知道异步操作底层到底是何时结束。
@Transactional注解描述的方法为事务切入点方法,此方法在执行时就会通过通知方法为其进行事务的增强