我想引用以切入点中的某个字符串结尾的任何包中所有类的所有公共方法。
我尝试过:
@Pointcut("execution(public * *.*SomeString.*(..))")
编辑:因为我想要引用的类都来自应用程序上下文,所以我知道我可以使用bean()来实现这一点
@Pointcut("bean(*SomeString)")
但我更喜欢使用execution()。
您可以在切入点中组合执行
和以满足您的需求。
您可以在
中使用来选择以某个子字符串结尾的类的所有方法,如下所示:
within(*..*SomeString)
您可以使用执行来选择以下所有公共方法:
execution(public * *(..))
结合起来,它们将选择以某个子字符串结尾的所有类的所有公共方法。
within(*..*SomeString) && execution(public * *(..))
*的问题*有些字符串是,它只查找第一个包级别的类,例如foo。BarSomeString或hello。MySomeString,但不在子包中,例如foo。aaa。bbb。BarSomeString或hello。xxx。MySomeString。
如果包名称完全不相关,则可以使用通配符:
execution(public * *..*SomeString.*(..))
顺便说一句,如果您使用的是完整的AspectJ而不是Spring AOP,那么您可以使用这个快捷方式(我不知道为什么Spring AOP不喜欢它,因为它还使用AspectJ库进行切入点匹配):
execution(public * *SomeString.*(..))
如果要在其下定义基本后台和子包,可以使用
语法:
execution(public * de.scrum_master..*SomeString.*(..))
后者的替代方法是使用()内的
,以限制包:
execution(public * *(..)) && within(de.scrum_master..*SomeString)
顺便说一句,在AspectJ中,您确实需要
execution()
切入点,因为它有更多的切入点类型,但在Spring AOP中,所有切入点都隐含为执行切入点,因为由于其基于代理的性质,这是Spring AOP支持的唯一连接点类型。所以你也可以写:
within(de.scrum_master..*SomeString)
对于基于接口的代理(Java动态代理),这是相同的,因为只支持公共方法。这里唯一的细微区别是,对于CGLIB代理(代理类而非接口时,或通过所有代理的配置时),这也将匹配受保护和包范围的方法。
有点离题,下面是如何不为类而是为具有特殊后缀的方法做同样的事情:
execution(public * *SomeString(..))
如果还想限制包/类的作用域,可以将其合并:
execution(public * *SomeString(..)) && within(de.scrum_master..*)
或等效:
execution(public * de.scrum_master..*SomeString(..))
因此,如果您想同时限制包、类和数学名称,请执行以下操作:
execution(public * de.scrum_master..*Controller.*SomeString(..))
或等效:
execution(public * *SomeString(..)) && within(de.scrum_master..*Controller)
问题内容: 我有针对特定软件包的此工作代码,但我想针对所有 controllers , service 和 dao 软件包进行配置 com.abc.xyz.content.controller com.abc.xyz.content.service com.abc.xyz.content.dao com.abc.xyz.category.controller com.abc.xyz.categor
我有一个特定包的工作代码,但我想为所有控制器、服务和dao包配置它,例如 com。abc。xyz。所容纳之物控制器 com。abc。xyz。所容纳之物服务 com。abc。xyz。所容纳之物道 com。abc。xyz。类别控制器 com。abc。xyz。类别服务 com。abc。xyz。类别dao公司 等等这是我的项目的基本包,有人可以帮助我如何去做它,使它适用于我的网络项目,包括控制器的所有类,
我必须在数据库中找到所有有模式的记录。如果字段中的任何单词以特定字符串结尾。比如“is”: 所以像%is%或%is这样的简单操作是无效的。有没有什么正则表达式可以帮我做这件事?我也可以在PHP中使用LIKE%is%和filtring获得所有记录,但仍然没有任何线索如何。我有结束字符串的解决方案,但没有单词。
我想从类列表(可能属于不同的包)中记录所有方法的条目。注意,这些方法应该只属于指定的类。 我尝试了以下方法,但这些都不起作用 (1) 在这里使用if()切入点,我得到一个错误 (2) 使用切入点和aop的组合。xml在这里我得到一个错误 这里出了什么问题? 当然可以通过在切入点中单独指定每个类来实现,但这对于数百个类来说是不可扩展的。理想情况下,如果可以从外部文本文件中提取类列表(便于配置),那就
问题内容: 我正在读csv到: 我想用空字符串替换该行的第8个元素中的所有匹配项。该功能不起作用。 有一个更好的方法吗? 问题答案: 问题是您对的结果不做任何事情。在Python中,字符串是不可变的,因此任何处理字符串的操作都将返回新字符串,而不是修改原始字符串。
问题内容: 我正在从数据库中检索数据,其中该字段包含带有HTML数据的字符串。我想替换所有的双引号,使得它可以被用于的 jQuery的 。 使用Java,我正在尝试使用替换引号。 结果字符串未显示所需的更改。O’Reilly的一篇文章规定了使用Apache字符串工具。还有其他办法吗? 是否有正则表达式或我可以使用的东西? 问题答案: 这是如何做 请注意,字符串是不可变的,因此仅仅做是不够的。您必须