applicationContext.xml配置
<!-- 开启组建扫描 -->
<context:component-scan base-package="com.xdl" />
<!-- 开启标注形式的aop -->
<aop:aspectj-autoproxy proxy-target-class="true" />
aspect书写:
/**使用环绕通知
* @throws Throwable */
@Around("within(com.fl.service.*)")
public Object around(ProceedingJoinPoint pjp) {
//方法执行之前获取当前时间
long start = System.currentTimeMillis();
//处理防止数据丢失
Object obj = null;
try {
obj = pjp.proceed();
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long end = System.currentTimeMillis();
//pjp.getSignature()获取方法签名 方法的全名
System.out.println(pjp.getSignature().getName()+
"执行了"+(end-start)+"毫秒");
return obj;
}
测试:
public static void main(String[] args) {
ApplicationContext app =
new ClassPathXmlApplicationContext("applicationContext.xml");
UserService us = app.getBean("userService",UserService.class);
us.login();
}
运行结果
login...
login执行了9毫秒