我正在尝试使用 Spring 为我创建的项目中的几个类提供加载时间编织。当我调用一个不在本地项目中的类时,我无法让它工作。
我创建了一个名为的类ExampleClass
,当我在其中执行@Around
一个方法时,我可以看到我对返回所做的修改,但是当我尝试对返回做同样的事情时,String
我无法得到任何结果。
这是我的Aspect
代码:
@Pointcut("call(* java.lang.String.*(..))")
public void cutString() {}
@Before("cutString()")
public void aroundString() throws Throwable {
System.out.println("I Never See This");
}
这是我对该代码的调用:
public class Main {
public static void main(String[] args) {
new ClassPathXmlApplicationContext("classpath:my-context.xml");
String string = new String("I Only See This");
System.out.println(string.toLowerCase());
}
}
的内容my-context.xml
只是一个<context:load-time-weaver />
.
我有一个aop.xml
定义,正如我所说的适用于一个类,但不适用于另一个类:
<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
<weaver>
<include within="com.example.*" />
<include within="java.lang.String" />
</weaver>
<aspects>
<aspect name="com.example.PerformMonitor" />
</aspects>
</aspectj>
我是否遗漏了什么,或者这是 Spring 和 AspectJ 的限制?