Это простой класс, который является аспектом:
package aspectTest;
import java.awt.Color;
import javax.swing.JLabel;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class aspect {
@Pointcut("execution(static String createMultiLabel(..))")
public void multilabelCreation() {}
@Around("multilabelCreation()")
public String changeLabelColours(ProceedingJoinPoint thisJoinPoint) throws Throwable {
String st = (String) thisJoinPoint.proceed();
System.out.println("fdfs");
st = "st"+st;
return st;
}
}
и это мой основной класс:
package aspectTest;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class messagemethod {
public static String createMultiLabel(final String msg) {
return msg;
}
public static void main(String[] args) {
String st1 = createMultiLabel("hello");
System.out.println(st1);
}
}
это мой aop.xml:
<aspectj>
<aspects>
<aspect name="aspectTest.aspect"/>
</aspects>
</aspectj>
и это моя конфигурация запуска:
моя проблема в том, что когда я запускаю свой основной класс, он просто пишет привет, но не привет, привет, что должно быть из-за аспекта. Кто-нибудь знает, почему мой аспект не оказывает никакого влияния?
@Pointcut("execution(static javax.swing.JLabel[] createMultiLabel(..))") public void aspectTest.messagemethod.multilabelCreation() {}
? - person Serge Ballesta   schedule 03.08.2015-javaagent:/path/to/aspectjweaver.jar
вместоjavaagentlib
- person Serge Ballesta   schedule 03.08.2015aop.xml
в конфигурации вашего проекта. И вы можете попробовать добавить<weaver options="-verbose"/>
между</aspects>
и</aspectj>
, чтобы увидеть переплетение сообщений во время выполнения. - person Serge Ballesta   schedule 03.08.2015-javaagent:
, заглавные буквы для классов, я больше не могу воспроизвести ошибку ;-) Ваше приложение должно быть правильным, если это работает неправильно, у вас где-то глупая опечатка, и, не зная точно всего, я не могу помочь вам ее найти (в любом случае, это действительно трудно найти на удаленном экране ...) - person Serge Ballesta   schedule 03.08.2015