创建一个切点类:
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class LogAop {
@Pointcut("@annotation(com.util.Log)")
public void log(){
}
//等待service执行完毕执行该方法
@After("log()")
public void afterExec(JoinPoint joinPoint) throws Exception{
MethodSignature ms=(MethodSignature) joinPoint.getSignature();
Method method=ms.getMethod();
String m=method.getName();
String name=method.getAnnotation(Log.class).description();
System.out.println(m+name);
}
}
Log.java:
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.ElementType;
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD })
public @interface Log {
String description() default "";
}
<aop:aspectj-autoproxy proxy-target-class="true" />
@Log(description = "修改")
public boolean updateUserInfo(int id, String name) throws Exception {
PageData pd = new PageData();
pd.put("id",id);
pd.put("name",name);
Integer count =(Integer) dao.update("UserInfoMapper.updateUser",pd);
if(count > 0){
return true;
}
return false;
}