Я пытаюсь использовать 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?