@Component 定义此方法交由spring bean对象管理并进行搜索查询;
@Autowired 描述一个对象has a属性,通常用作方法注入;注意:一个属性对应着一个注解,不能共享!
@Service 定义一个接口
@Controller bean对象;即交给spring框架去管理;(认为返回值是一个view)
@RequestMapping("/...") 定义url请求的映射,即访问路径,这里的mapping表示映射的意思;
@GetMapping("/...") 等效于 @RequestMapping(value="/...",method = RequestMethod.GET),这个注解描述的方法只能处理Get类型的请求
@ResponseBody 方法返回值不再是一个view,并告诉spring将响应结果转换为json格式字符串,然后写入到http响应体中,最后传输到客户端;
@RestController == @Controller+@ResponseBody;返回值都是字符串;
AOP(面向切面注解,Advice表示通知方法的意思,cache表示缓存的意思)
@Order 用于定义切面执行的优先级,数字越小优先级越高,默认优先级比较低,即@Order(1)>@Order(2)>@Order(3)的这种形式;
@Aspect 声明此对象是一个切面,一般为一个具体的类对象;
@Pointcut 定义一个切入点(多个连接点JoinPoint集合或者多个方法的集合)
@RequiedCahe 此注解描述的方法为切入点方法;
Spring中通过切入点表达式定义具体切入点,其常用AOP切入点表达式定义及说明:
指示符作用
bean
用于匹配指定bean对象的所有方法
within
用于匹配指定包下所有类内的所有方法
execution
用于按指定语法规则匹配到具体方法
@annotation
用于匹配指定注解修饰的方法
bean表达式一般应用于类级别,实现粗粒度的切入点定义,案例分析:
1.bean("userServiceImpl")指定一个userServiceImpl类中所有方法。
2.bean("*ServiceImpl")指定所有后缀为ServiceImpl的类中所有方法。
@annotaion表达式应用于方法级别,实现细粒度的切入点表达式定义,案例分析:
1.@annotation(anno.RequiredLog) 匹配有此注解描述的方法。
2.@annotation(anno.RequiredCache) 匹配有此注解描述的方法。
其中:RequiredLog为我们自己定义的注解,当我们使用@RequiredLog注解修饰业务层方法时,系统底层会在执行此方法时进行日扩展操作。
@Target 用于定义这个注解只能描述的信息,比如只能描述方法,可以在注解后面加括号进行声明(目标对象),即@Target(ElementType.METHOD);
@Retention 这个注解用来声明此方法何时生效,结合括号进行作用声明,即@Retention(RetentionPolicy.RUNTIME);
针对于Advice通知方法的执行时间的一些注解:
@Around 前后都可以执行,注意:有严格顺序要求时使用此注解
@Before 目标方法执行之前执行此方法进行功能增强
@AfterReturning 目标方法没有出现异常顺利结束时执行它
@AfterThrowing 执行目标方法出现异常时执行它
@After 不论目标方法是否执行成功我都要执行它进行功能增强,这个方法一般用作资源的释放;
@Transactional //此注解描述的方法为事务的切入点方法,方法执行之前会开启事务,执行结束后会结束或回滚事务(此注解通常用于在业务层控制事务一体性);
涉及分页时使用的一些注解:
@Data 用于对类里的私有属性(private)生成get 和 set 方法;
@AllArgsConstructor 为类里添加含全参的构造函数;
@NoArgsConstructor 添加无参的构造函数;
@Slf4j slf4j只是一个日志标准,并不是日志系统的具体实现,作用:1.提供日志接口2.提供获取具体日志对象的方法;
Shiro安全框架涉及的一些注解用法如下:
@Configuration 注解描述的类为一个配置对象,此对象也会交给spring管理;
@RequiresPermissions("...") 注解由shiro框架提供,此注解描述的方法为切入点方法,表示此方法在执行时,需要进行授权,也就是说假如用户拥有访问方法的权限,才可以访问这个方法,("...")括号内的字符串为一个权限标识;