spring aop之父子容器
需求;项目对外提供接口,要求每个对外接口都要进行token认证。 解决办法:写一个token认证的工具类,在每个需要认证的接口方法开始的地方,调用工具类中的token认证方法。 问题:因为要满足指定条件才可以进行下一步,在接口中调用token认证的时候,要返回结果进行判断,不止是一行代码可以解决问题。 优化:使用aop 切面编程,在执行接口的内容之前,进行认证。通过注解的方式,织入到切点中。这样在需要进行认证的接口上只需要添加一个注解就可以token认证功能。 问题:基于Aspect注解实现该功能,在程序启动时,访问接口,直接进入接口,没有进入切面。 AuthController @RestController public class AuthController { @PostMapping("authentication") @TokenChecker public Result getToken(String username,String password){ return null; } } 切面类:execution 表达式没有任何问题。 @Aspect @Component public class TokenAspect { //匹配指定类下的有指定注解的方法。只要在要切入的方法上加上注解就可以将该方法作为切入点。 @Pointcut("execution