文件路径如下
1.pom.xml
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.8.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.3.7.RELEASE</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies> 2.application-confifig.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-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"> <bean id="Calculation" class="com.hncj.demo.service.CalculationImpl"/> <!--<bean id="aspcejHandler" class="com.tgb.aop.AspceJAdvice"/>--> <bean id="AnnoAdvice" class="com.hncj.demo.anno.AnnoAdvice"/> <aop:aspectj-autoproxy></aop:aspectj-autoproxy> </beans> 3.Calculation
package com.hncj.demo.service; public interface Calculation { public void add(); public void s(); public void m(); public void d(); } 4.CalculationImpl
package com.hncj.demo.service; public class CalculationImpl implements Calculation { @Override public void add() { System.out.println("a"); } @Override public void s() { System.out.println("s"); } @Override public void m() { System.out.println("m"); } @Override public void d() { System.out.println("d"); } } 5.AnnoAdvice
package com.hncj.demo.anno; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; @Aspect public class AnnoAdvice { @Pointcut("execution(* com.hncj.demo.service.CalculationImpl.*(..))") public void pointcut() { } @Before("pointcut()") public void before() { System.out.println("前置"); } @After("pointcut()") public void after() { System.out.println("后置"); } } 6.Mytest
import com.hncj.demo.service.Calculation; import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Mytest { @Test public void annoTest() { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application-config.xml"); Calculation calculation = context.getBean("Calculation", Calculation.class); calculation.add(); } }