![]() |
1
9
AspectJExpressionPointcut使用了一个缓存(shadowMatchCache),它加快了根据pointcut表达式决定是否应将AOP应用于某个方法调用的速度。这个缓存可能会消耗大量内存。 另外,在提供特定bean的所有方法以查看是否存在匹配的切入点表达式之前,Spring首先检查bean类是否可以 可能匹配 快速的 根据使用内部切入点的AspectJ开发人员的说法,结果是更明确的no recommend to never use a standalone kind of pointcuts (execution, call, get, set), but combine these with within 但是,无法共享shadowMatchCache,因为它包含每个切入点表达式匹配或不匹配的结果。 但至少你可以限制缓存的内容。我还认为,一旦applicationContext启动,Spring可能会通过不保留整个缓存来改进这一点。F、 当一个新的bean在applicationContext已经启动之后被动态添加到applicationContext中时,他们可能会丢弃所有不匹配的内容,代价是重新执行一些匹配。 AspectJExpressionPointcut类中另一个可能占用内存的地方是pointCutParser。此解析器可能在applicationContext中的所有aspectjexpressionpointcut之间共享。在吉拉的罚单上抢劫 SPR-7678 |
![]() |
Daniel_H · Haskell和gate不使用==或/= 7 年前 |
|
JohntyWeaver · 使用正则表达式从文件名获取文件id 7 年前 |
![]() |
S_D · 表达式和参数的执行顺序如何?[已关闭] 7 年前 |