我有一堆项目声明了一些 spring bean 文件。我想编写一个“库”,它提供一个实用程序,该实用程序采用一些 bean 名称并在对象“周围”添加一些行为(例如:呼叫计数、监控、日志记录等)
一种明显的方法是在项目的 spring xml 文件中添加一些 AspectJ 注释,但我希望“实用程序”搜索一些 bean 并向它们添加行为(这样项目本身不知道效用)。
该实用程序将在 spring xml 文件中的某个地方声明,因此它可以访问 ApplicationContext,因为它可以实现 ApplicationContextAware 接口,但是我热衷于探索如何以编程方式在应用程序上下文中修改另一个 bean 的行为。例如,找到一个 id 为“OrderService”的 bean,围绕所有方法创建一个带有一些监视/调用计数等的切面 bean,并在应用程序上下文中替换该 bean 为“OrderService”
我知道这种方法有缺点,但我追求的是“有可能做到这一点吗?如果可以,怎么做?”