嗝屁小孩纸 2023-02-23 20:23 采纳率: 80.8%
浏览 20
已结题

反射与依赖注入一起使用时切面会失效吗?

请问 SpringBoot 的 Aspect 注解编程,在什么情况下会导致切面没法执行?

我是这么个应用场景,Controller 也就是暴露给用户的接口在机器1,通过其他协议将http请求进行序列化传输到另一台机器,然后由这台机器来被动调用 Service,没错就是通过 反射调用的,这个切面会成功执行吗?

  • 写回答

2条回答 默认 最新

  • GPT_Pro 2023-02-23 20:36
    关注

    该回答内容部分引用GPT,GPT_Pro更好的解决问题
    使用反射和依赖注入一起时,切面通常是失效的。这是由于反射技术不会触发 Spring 的 AOP 框架,同样的道理,依赖注入也不会触发 AOP 框架,所以当使用反射或依赖注入时,切面通常是无效的。

    SpringBoot 中的 Aspect 注解切面编程在以下几种情况下会导致切面无法正常执行:

    1. 如果使用反射或依赖注入调用 Service 时,由于反射和依赖注入不触发 Spring 的 AOP 框架,因此无法触发 Aspect 注解定义的切面。

    2. 如果 Aspect 注解定义的切面没有正确应用到目标方法上,则也会导致切面无法正常执行。例如在定义切面时忘记声明 @Pointcut 注解或在 @Pointcut 注解中忘记声明 Pointcut 表达式等问题,都会导致 Aspect 注解定义的切面无法正常执行。

    3. 如果在类上使用 @Aspect 注解定义了切面,但是在类中并没有定义 @Pointcut 注解方法来实现 Pointcut 表达式时,也会导致切面失效。

    4. 如果使用 @AspectJ 注解来定义切面,但是忘记声明 @EnableAspectJAutoProxy 注解时,也会导致切面失效。

    总之,在使用 SpringBoot 的 Aspect 注解定义切面时要特别注意上述情况,以避免出现切面失效的问题。
    如果回答有帮助,望采纳。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月24日
  • 创建了问题 2月23日

悬赏问题

  • ¥15 已知平面坐标系(非直角坐标系)内三个点的坐标,反求两坐标轴的夹角
  • ¥15 webots有问题,无响应
  • ¥15 数据量少可以用MK趋势分析吗
  • ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
  • ¥15 大智慧怎么编写一个选股程序
  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上