领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多Spring 2.5 具有一个新的切入点指示符 -- bean(),允许在具有匹配名称模式的 bean 中选择连接点。 现在,即使有多个类型的 bean,也可以使用自动代理机制以及 Spring-AspectJ 集成来选择特定的 bean。 以前,您可以使用 BeanNameAutoProxyCreator 来实现类似的结果;但是,该机制不适用于 Schema 样式或 @AspectJ 方面。
除了选择特定的 bean 之外,如果您遵循适当的命名约定,此切入点指示符还提供两种有趣的方式来选择 bean
图 1:使用 bean() 切入点,根据 bean 的名称选择水平和垂直切片
此切入点表示 AspectJ 切入点表达式语言的 Spring 特定扩展,因此仅在基于 Spring 的应用程序中有用。 名称模式遵循 AspectJ 的名称模式匹配规则,其中 '*' 是唯一允许的通配符。 以下是一个表格,显示了一些示例切入点和它们选择的 bean。切入点 | 选择的连接点 |
---|---|
bean(accountRepository) | 名为“accountRepository”的 bean |
!bean(accountRepository) | 除了“accountRepository”bean 之外的任何 bean |
bean(*) | 任何 bean |
bean(account*) | 任何名称以“account”开头的 bean |
bean(*Repository) | 任何名称以“Repository”结尾的 bean |
bean(accounting/showaccount) | 名为 accounting/showaccount 的 bean(指定处理该 URL 的控制器) |
bean(accounting/*) | 任何名称以“accounting/”开头的 bean(指定任何处理与会计相关的 URL 的控制器) |
bean(accounting/*/edit) | 任何名称以“accounting/”开头并以“/edit”结尾的 bean(指定任何处理与会计相关的编辑操作功能的控制器) |
bean(*dataSource) || bean(*DataSource) | 任何名称以“dataSource”或“DataSource”结尾的 bean |
bean(service:name=monitoring) | 名为“service:name=monitoring”的 bean |