项目结构如图,基本的spring的配置就不在赘述
1.首先编写自定义的切面类
package org.wu.test;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Component
@Aspect
public class DIv {
@Pointcut("execution(* org.wu.test.WyzController.say(..))")
public void aspect(){
}
@Before("aspect()")
public void dobefore(){
System.out.println("开始");
}
@AfterReturning("aspect()")
public void doAfter(){
System.out.println("结束");
}
}
@Component:然组件扫描注入到spring容器管理
@Aspect 指定切面类
@Pointcut() 指定切入点
@Before("aspect()")前置通知
package org.wu.test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitterReturnValueHandler;
@Controller
public class WyzController {
@Autowired
private Wyz wyz;
@RequestMapping("/say")
public String say() throws Exception {
wyz.say();
return "";
}
}要操作的类,就是把切面的作用指定带这个类的say方法上
这就完成了一个很简单的aop应用实例