1
在项目中,我们使用注释来定义方面。eclipse中的建议方法的标记
不幸的是,我不能让eclipse在建议的方法旁边显示标记。
在另一个项目中,我们使用XML来定义方面和eclipse显示标记。
尽我张贴一些代码来澄清:
首先一个Bean建议:
package aop.test;
import org.springframework.stereotype.Service;
@Service
public class Worker {
public void work() {}
}
然后方面:
package aop.test;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Service;
@Aspect
@Service
public class WorkerLogger {
@Before("execution(void aop.test.Worker.work())")
public void log() {
System.out.println("working...");
}
}
最后一个主要方法制备的ApplicationContext ,得到豆并运行建议的方法:
package aop.test;
import org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext context;
context = new AnnotationConfigApplicationContext();
context.register(AnnotationAwareAspectJAutoProxyCreator.class);
context.scan("aop.test");
context.refresh();
context.getBean(Worker.class).work();
}
}
我在使用STS插件和STS本身的eclipse中试过这个。我从来没有在work()
旁边得到一个红色箭头表示建议。
我错过了什么?
我改变了这个例子,使用一个定义工作者和记录器的bean,aspect和` `的XML,并且仍然没有看到标记建议的方法。有什么选择我必须启用? –
CKuck
2011-12-15 10:05:03
当我启用Spring Aspects Tooling时,它只是添加了AspectJ Nature,我可以看到标记,但AspectJ Nature不是我想要的。建议使用非托管实例或静态方法,这意味着使用AspectJ编译器。 – CKuck 2011-12-15 13:59:59