我有一大堆聲明一些spring bean文件的項目。我想寫一個「庫」,提供一個實用工具,它需要一些bean名稱並在對象周圍增加一些行爲(例如:調用計數,監視,記錄等)。使用Spring添加行爲
這樣做的一個顯而易見的方法是在項目的spring xml文件中添加一些AspectJ註釋,但我希望「實用程序」搜索一些bean並向它們添加行爲(這樣項目本身不知道該實用程序)。
該實用程序將在spring xml文件中的某處進行聲明,因此它可以訪問ApplicationContext,因爲它可以實現ApplicationContextAware接口但是我非常熱衷於探索如何以編程方式修改app context中另一個bean的行爲。例如,找到一個id爲「OrderService」的bean,創建一個包含所有方法的監視/調用計數等的bean,並在「OrderService」的應用程序上下文中替換該Bean。
我知道這樣做有缺點但我所追求的是「是否有可能做到這一點?如果是的話,怎麼樣?」
我幾乎要寫我自己的BeanPostProcessor,但在你提到的博客中描述的「BeanNameAutoProxyCreator」正是我所追求的! –