2015-02-04 1 views
1

Я запускаю проект HelloWorld с использованием времени загрузки во времени (LTW) в аспектеJ. Я определил только абстрактный аспект. Я не определен конкретный аспект, но упоминается "name" атрибут <concrete-aspect> как main.java.aop.helloworld.MyHelloWorldAspect в aop.xml, как показано ниже:Обязательно ли реализовать конкретный аспект в аспектеJ

<concrete-aspect name="main.java.aop.helloworld.MyHelloWorldAspect" 
     extends="main.java.aop.helloworld.HelloWorldAspect"> 
     <pointcut name="helloWorld" 
      expression="execution(public static void HelloWorld.say*(..))" /> 
    </concrete-aspect> 

Я мог бы запустить штраф приложений и получении желаемого результата. Но ниже строка печатается для определения конкретного аспекта.

[[email protected]] info define aspect main.java.aop.helloworld.MyHelloWorldAspect 

Мне интересно, является ли конкретная реализация класса обязательной или нет, поскольку она печатает сообщение INFO для определения конкретного аспекта. Кроме того, скручивание и применение аспект и рекомендации отлично работают в соответствии с приведенным ниже сообщением INFO.

[[email protected]] weaveinfo Join point 'method-execution(void main.java.aop.helloworld.HelloWorld.say(java.lang.String))' in Type 'main.java.aop.helloworld.HelloWorld' (HelloWorld.java:5) advised by before advice from 'main.java.aop.helloworld.MyHelloWorldAspect' (HelloWorldAspect.java) 

Может ли кто-нибудь объяснить, является ли конкретная реализация класса обязательной или нет. Если это не требуется, пожалуйста, помогите мне понять, как это работает. Благодарю.

ответ

0

Если вы не указали конкретный аспект, то рекомендации в абстрактном аспекте не будут применяться. Компиляция это:

class C {} 
abstract aspect X { before():staticinitialization(C) {}} 

и советы в X не будет применяться к C. Удалите abstract или обеспечить конкретный суб-аспект X и она будет применяться. Тем не менее, это верно только для рекомендаций - любая статическая сквозная перерезка в абстрактном аспекте будет применять, например, декларации типа и метода или поля.

У вас есть два варианта для конкретного аспекта - либо код, либо XML, и вы идете по XML-маршруту, который в порядке. Я думаю, что первое (плохо сформулированное) информационное сообщение, которое вы показываете, говорит вам, что система определяет конкретный аспект в соответствии с вашей спецификацией, а не то, что вам нужно.

+0

Отлично! Большое спасибо за рассылку моего запроса. – sridhar

Смежные вопросы