所需要的包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.9</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.9</version>
</dependency>
1.定义一个接口
public interface IStudent {
public void hello(String name);
}
2.实现上面的接口
public class StudentImpl implements IStudent{
public void hello(String name) {
System.out.println("我的名字叫:"+name);
}
}
3.定义切面类
import org.aspectj.lang.JoinPoint;
public class StudentAdvice {
public void logBefore(JoinPoint joinPoint) {
System.out.println("方法执行前执行");
}
public void logAfter(JoinPoint joinPoint) {
System.out.println("方法执行后执行");
}
}
4.定义applicationContext.xml
<aop:aspectj-autoproxy />
<bean id="student" class="com.aop.StudentImpl" />
<!-- Aspect -->
<bean id="logAspect" class="com.aop.StudentAdvice" />
<aop:config>
<aop:aspect id="aspectLoggging" ref="logAspect" >
<!-- @Before -->
<aop:pointcut id="pointCutBefore"
expression="execution(* com.aop.IStudent.hello(..))" />
<aop:before method="logBefore" pointcut-ref="pointCutBefore" />
<!-- @After -->
<aop:pointcut id="pointCutAfter"
expression="execution(* com.aop.IStudent.hello(..))" />
<aop:after method="logAfter" pointcut-ref="pointCutAfter" />
</aop:aspect>
</aop:config>
5.创建测试类
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
IStudent student = ac.getBean("student", IStudent.class);
student.hello("张三");
方法执行前执行
我的名字叫:张三
方法执行后执行