用于java.security.KeyStore的Spring AOP代理

时间:2014-10-08 16:43:56

标签: java spring aop keystore cglib

我想知道有没有办法为java.security.KeyStore制作一个Spring AOP代理,这里有一些障碍:

  • KeyStore没有默认构造函数
  • KeyStore的所有方法都是最终

我知道用上述约束制作Spring AOP代理是不可能的,但无论如何我需要以某种方式计算应用程序中KeyStore的方法调用。任何人都可以建议绕过Spring AOP约束或其他方式?

1 个答案:

答案 0 :(得分:0)

如果您可以控制调用代码 - 并且希望您这样做,因为它是您自己的应用程序,您正在谈论 - 并且愿意使用完整的AspectJ(不需要任何代理)而不是Spring-AOP,您可以使用call()切入点而不是仅限于Spring-AOP的execution()切入点。切入点看起来像这样(未经测试,被记忆破解):

@Pointcut("call(* java.security.KeyStore.*(..))")

如果要将切入点扩展到子类,请在类名后面添加+

@Pointcut("call(* java.security.KeyStore+.*(..))")

如果构造函数调用来自您编写的代码,您甚至可以拦截构造函数调用:

@Pointcut("call(java.security.KeyStore+.new(..))")