难点在于指定的 bean
目前有很多个不同的类,没有规律,类文件还无法改动,都是自动生成的。后期还会继续增多。也就是说不能在 aspect 中写死 expression 限定。
能不能在下述方式声明 bean 的同时,将 A 和 B 的所有方法声明成切入点?
@Bean
类 A getA (){}
@Bean
类 B getB (){}
1
lu5je0 2020-03-23 21:36:56 +08:00 via Android
BeanPostProcessor
|
2
DanielGuo OP 我知道可以把 bean 命名成统一后缀,然后 expression 匹配后缀,但是我觉得这样不优雅。 有没有像加注解的方式?可以在 @Bean 上再加一个注解标明切点
|
5
securityCoding 2020-03-23 22:16:32 +08:00
@DanielGuo 可以, 比如记录请求日志
@Around("(@annotation(org.springframework.web.bind.annotation.RequestMapping)" + "||@annotation(org.springframework.web.bind.annotation.GetMapping)" + "||@annotation(org.springframework.web.bind.annotation.PostMapping)" + "||@annotation(org.springframework.web.bind.annotation.PutMapping)" + "||@annotation(org.springframework.web.bind.annotation.DeleteMapping))" ) |
6
DanielGuo OP @securityCoding 这样确实是最直观的,就是感觉有点笨笨的,要是能把注解标在 @Bean 方法上就优雅多了
|
7
DanielGuo OP @securityCoding 现在我的痛点就是,我想切的类。。上面并没有注解
|
8
DanielGuo OP @lu5je0 不好意思,记混了,第三方类确实不用实现接口,processor 是对所有 bean 进行遍历。。。但是现在的痛点就是遍历过程中我无法分辨哪些 bean 是需要切的
|
9
zerozerone 2020-03-23 23:23:51 +08:00 via Android
自定义 bean 扫描,扫到需要增强的 bean 之后再手动注册到容器
|
10
MoHen9 2020-03-24 07:48:15 +08:00 via Android
最近想分享 AOP 的一些小技巧,这个兴许可以帮到你,https://github.com/dingxiuan/springboot-doughnut/blob/master/aop/src/main/java/com/benefit/aop/AopWebRequestAspect.java
如果你有疑问,可以在 V2 给我发消息 |