http://www.oschina.net/code/snippet_246557_9205
@Before是在所拦截方法执行之前执行一段逻辑。
@After 是在所拦截方法执行之后执行一段逻辑。
@Around是可以同时在所拦截方法的前后执行一段逻辑。
package
com.itsoft.action;
import
org.springframework.context.support.ClassPathXmlApplicationContext;
import
org.springframework.stereotype.Controller;
/**
*
* @author zxf
* 演示aop测试类
*/
@Controller
public
class
UserAction {
public
void
queryUsers(){
System.out.println(
"查询所有用户【all users list】"
);
}
public
static
void
main(String[] args) {
ClassPathXmlApplicationContext ctx =
new
ClassPathXmlApplicationContext(
"application-aop.xml"
);
UserAction userAction = (UserAction)ctx.getBean(
"userAction"
);
userAction.queryUsers();
ctx.destroy();
}
}
--------------------------------------------------------------------------
@Aspect
@Component
public
class
LogIntercept {
@Pointcut
(
"execution(public * com.itsoft.action..*.*(..))"
)
public
void
recordLog(){}
@Before
(
"recordLog()"
)
public
void
before() {
this
.printLog(
"已经记录下操作日志@Before 方法执行前"
);
}
@Around
(
"recordLog()"
)
public
void
around(ProceedingJoinPoint pjp)
throws
Throwable{
this
.printLog(
"已经记录下操作日志@Around 方法执行前"
);
pjp.proceed();
this
.printLog(
"已经记录下操作日志@Around 方法执行后"
);
}
@After
(
"recordLog()"
)
public
void
after() {
this
.printLog(
"已经记录下操作日志@After 方法执行后"
);
}
private
void
printLog(String str){
System.out.println(str);
}
}
-------------------------------
<?xml version=
"1.0"
encoding=
"UTF-8"
?>
<beans xmlns=
"http://www.springframework.org/schema/beans"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop=
"http://www.springframework.org/schema/aop"
xmlns:context=
"http://www.springframework.org/schema/context"
xsi:schemaLocation="
http:
//www.springframework.org/schema/context
http:
//www.springframework.org/schema/context/spring-context-3.0.xsd
http:
//www.springframework.org/schema/beans
http:
//www.springframework.org/schema/beans/spring-beans-3.0.xsd
http:
//www.springframework.org/schema/aop
http:
//www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<context:annotation-config />
<context:component-scan base-
package
=
"com.itsoft"
/>
<aop:aspectj-autoproxy />
</beans>