what
- SpringBoot2.0項目啓動時,自定義攔截器無法獲取切面類的自定義註解 項目中的攔截器是用來做鑑權的,通過自定義註解來標識需要鑑權的Controller控制器,Controller類被切面後,攔截器獲取註解的方法失效
why
- cglib代理生成的子類沒有繼承父類(Controller) 的註解
how
- 用AnnotationUtils.findAnnotation來尋找,這個方法會往超類再找一次註解
- 自定義的註解添加@Inherited註解屬性,代理生成的子類會繼承父類的註解
think more
- cglib代理類的方法如果是final修飾,則運行時調用的是super.method 父類方法。不是final修飾的方法被重寫則調用子類重寫的方法,沒被重寫還是調用父類方法