Это мой первый вопрос, поэтому, пожалуйста, будьте осторожны. :-) Я знаю, что AspectJ может создавать pointcuts на статических инициализаторах java классов. Но вопрос, является ли статический инициализатор в Аспект, как показано ниже, гарантированно можно назвать только один раз:Являются ли статические инициализаторы гарантированными для аспектов AspectJ?
@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? Я догадываюсь, да, и, похоже, это работает, но я ищу гарантию в этом направлении.
Согласно ответу на список рассылки usersj-пользователей, Рамнивас Ладдад (автор прекрасной книги AspectJ In Action) говорит, что статические инициализаторы в аспектах ARE называются так же, как и для классов. – fool4jesus