SpringBoot2.0 AOP之再探cglib

what

  • SpringBoot2.0項目啓動時,自定義攔截器無法獲取切面類的自定義註解 項目中的攔截器是用來做鑑權的,通過自定義註解來標識需要鑑權的Controller控制器,Controller類被切面後,攔截器獲取註解的方法失效

why

  1. cglib代理生成的子類沒有繼承父類(Controller) 的註解

how

  1. 用AnnotationUtils.findAnnotation來尋找,這個方法會往超類再找一次註解
  2. 自定義的註解添加@Inherited註解屬性,代理生成的子類會繼承父類的註解

think more

  • cglib代理類的方法如果是final修飾,則運行時調用的是super.method 父類方法。不是final修飾的方法被重寫則調用子類重寫的方法,沒被重寫還是調用父類方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章