我正在尝试使用@Before
建议和一个就地切入点表达式来实现一个简单的Spring AOP(v4)示例,但是不调用aspect方法。我有所有必需的依赖项(spring-aop,aopalliance,aspectweaver)。我做错了什么?
package com.xyz;
public class TestClass {
@PostConstruct
public void init() {
test();
}
public void test() {
...
}
}
方面:
@Aspect
@Component
public class MyAspect{
@Before("execution(* com.xyz.TestClass.test())")
public void beforeTest() {
...
}
}
答案 0 :(得分:0)
未执行AOP的原因是因为TestClass.test()
未在spring上下文中调用,而是从TestClass.init()
进行简单/普通调用。
要测试您的设置,请将其修改为类似于下面的内容,以便TestClass.test()
调用由spring管理
package com.xyz;
public class TestClass {
public void test() {
...
}
}
将TestClass
注入另一个班级AnotherTestClass
并从那里调用test
方法
package com.xyz;
public class AnotherTestClass {
@Autowired
private TestClass testClass;
public void anotherTest() {
testClass.test();
}
}