注解方式写切入点
import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; @Aspect//标注这个类是一个切面 public class AnnotationPointCut { @Before("execution(* com.peng.service.UserServiceImpl.*(..))") public void before(){ System.out.println("执行前!!!!!!!!!!"); } @After("execution(* com.peng.service.UserServiceImpl.*(..))") public void after(){ System.out.println("执行后!!!!!!!!!!"); } }
applicationContext.xml文件内需要开启注解支持
<?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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!--注册bean--> <bean id="userService" class="com.peng.service.UserServiceImpl"/> <bean id="log" class="com.peng.log.Log"/> <bean id="afterLog" class="com.peng.log.AfterLog"/> <bean id="annotationPointCut" class="com.peng.diy.AnnotationPointCut"/> <!--开启注解支持--> <aop:aspectj-autoproxy/> </beans>
测试类
import com.peng.service.UserService; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MyTest { public static void main(String[] args) { ApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); //动态代理的是接口 UserService userService = (UserService) classPathXmlApplicationContext.getBean("userService"); userService.add(); } }
结果