gpt4 book ai didi

java - 动态切入点表达式。

转载 作者:太空宇宙 更新时间:2023-11-04 08:19:06 25 4
gpt4 key购买 nike

事情是这样的,我一直在使用 AOP 开发一个监控解决方案,它可以扩展到任何类型的组件。我会尽力消除我对某些领域的担忧。

想法:
拥有一种机制,允许基于类型(即 Spring bean)定义动态切入点表达式。

我做了什么:
创建了一个实现 ApplicationContextAware 的组件,该组件检查 Spring Context 并列出切入点应考虑的所有 bean 类型和名称。

问题:
问题在于,此时我无法重新定义或使用任何切入点,因为 Spring AOP 进程已经创建了代理对象。

我尝试过的:
• 实现了我自己的切入点、顾问和建议,它与我的 bean 列表进行比较,但是,它被忽略了。
• 实现了一个PointcutFactoryBean,它将为已声明的Advisor 提供切入点。
• 尝试修改已声明的切入点(添加基于beanId 的新表达式)并将其关联到BeanNameAutoProxyCreator,以及与此切入点关联的拦截器。例如:
bean ( bean 1)|| bean(otherBean)等等。

通过所有这些尝试,我偶然发现了同样的问题,一切都已经定义并且无法从上下文中更改。

问题:
Spring AOP 可以做到这一点吗?我们不想涉及到任何AspectJ的事情,比如编织等等......总而言之,我正在寻找一种方法来创建切入点表达式并将其分配给应用程序启动时的切入点,同时考虑到所有 bean。

希望我说得很清楚,如果没有,请告诉我,我会尽力提供更多详细信息或代码。

提前非常感谢!

最佳答案

能够通过创建我自己的与 AOP 相关的每个类的实现来做到这一点:

  • 切入点。
  • 方法匹配器。
  • 家长顾问。
  • 类过滤器。

直接使用 Spring 实例化它们,在 Spring 上下文中添加一个空的 aop:config 元素就足以使其完美工作。

如果有人需要更多信息,请告诉我。

谢谢!

关于java - 动态切入点表达式。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9899086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com