AspectJ: добавить статический инициализатор в класс - PullRequest
1 голос
/ 08 ноября 2011

Некоторые из моих классов Java имеют статические методы, помеченные специальной аннотацией @Assert, содержащей проверки работоспособности.

Я хотел бы выполнить эти проверки до того, как какой-либо код будет фактически выполнен.Лучше всего было бы вызывать эти методы из <clinit>.Как получить похожее поведение, используя AspectJ, и без изменения исходного кода?

Ответы [ 2 ]

2 голосов
/ 09 ноября 2011

AspectJ предоставляет определение staticinitialization(TypePattern) pointcut, которое выберет существующие статические инициализаторы и перехватит их. Однако не представляется возможным добавлять статические инициализаторы в классы, в которых они отсутствуют.

1 голос
/ 09 ноября 2011

Просто чтобы добавить к ответу Джона;staticInitialization pointcut не требует наличия каких-либо блоков static, в этом случае он действует как простая точка присоединения к загрузке класса.

Это будет время для вызова ваших методов, помеченных @Assert.

...