1导入相关jar包的坐标
<dependencies>
<!--spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.9</version>
</dependency>
<!-- aspectjweaver -->
<dependency>
<groupId>aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.5.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.9</version>
<scope>compile</scope>
</dependency>
</dependencies>
2.编写目标方法和目标接口
import org.springframework.stereotype.Component;
public class Target implements TargetInterface{
@Override
public void show() {
System.out.println("show");
}
@Override
public void sell() {
System.out.println("sell");
int i=1/0;
}
}
public interface TargetInterface {
void show();
void sell();
}
3.编写切面类
public class MyAspect {
public void before(){
System.out.println("before");
}
public void after(){
System.out.println("after");
}
public void afterreturning(){
System.out.println("afterreturning");
}
public void around(ProceedingJoinPoint pjp) throws Throwable {
System.out.println("around before");
pjp.proceed();
System.out.println("around after");
}
public void throwRuning(){
System.out.println("throwRuning");
}
}
4配置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 https://www.springframework.org/schema/aop/spring-aop.xsd">
<!--目标类-->
<bean name="target" class="com.Proxy.Target"/>
<!--切面类-->
<bean name="aspect" class="com.Aspect.MyAspect"/>
<!--织入weaving-->
<aop:config>
<!--配置公共切点表达式-->
<aop:pointcut id="one" expression="execution(* com.Proxy.Target.*(..))"/>
<!--切面-->
<aop:aspect ref="aspect">
<aop:before method="before" pointcut-ref="one"/>
<aop:after method="after" pointcut-ref="one"/>
<aop:after-returning method="afterreturning" pointcut-ref="one"/>
<aop:after-throwing method="throwRuning" pointcut-ref="one"/>
<aop:around method="around" pointcut-ref="one"/>
</aop:aspect>
</aop:config>
</beans>
5.测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(value = "classpath:ApplicationContext.xml")
public class AopTest {
@Autowired
private TargetInterface target;
@Test
public void test(){
target.sell();
target.show();
}
}