首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否保证为AspectJ方面调用静态初始化程序?

是否保证为AspectJ方面调用静态初始化程序?
EN

Stack Overflow用户
提问于 2010-02-09 09:42:10
回答 1查看 241关注 0票数 1

这是我的第一个问题,所以请轻点。-)我知道AspectJ可以在java类的静态初始化器上创建切入点。但问题是,一个方面中的静态初始化器(如下所示)是否保证只调用一次:

代码语言:javascript
复制
@Aspect
public class MyAspect {
  private static Map configuration;
  static {
    // Some initialization stuff
    configuration = Config.getConfiguration();
  }
  ... use the "configuration" map in pointcuts and advices
}

换句话说,是否像加载java类一样加载了一个方面?这是通过ClassLoader完成的吗?我猜是的--这似乎很有效--但我正在寻找这样的保证。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-09 09:53:07

AspectJ使用字节码修改。这种修改可能发生在编译时(“编译时编织”,或CTW),或在加载时(“加载时编织”,或LTW)。

如果您想要确定,那么我建议您使用aspectj编译器对您的示例执行CTW,然后通过javap工具(或类似的工具)传递生成的类文件,以查看它实际生成了什么。这应该让你放心,它正在(或不是)做你认为它所做的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2228061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档