导入依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.15</version>
</dependency>
//不导入可能会报错
<dependency>
<groupId>org.aspectj</groupId >
<artifactId>aspectjweaver</artifactId >
<version>1.6.11</version >
</dependency>
1.创建实体类
service接口
public interface MyService {
void add();
void delete();
}
service接口的实现类
public class MyServiceImpl implements MyService{
@Override
public void add() {
System.out.println("执行了add 方法");
}
@Override
public void delete() {
System.out.println("执行了delete方法");
}
}
定义要横向切入的内容:
public class AfterLog implements AfterReturningAdvice {
@Override
public void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable {
System.out.println("执行了"+method.getName()+"方法,返回值为"+returnValue);
}
}
public class BeforeLog implements MethodBeforeAdvice {
@Override
public void before(Method method, Object[] args, Object target) throws Throwable {
System.out.println("执行了"+method.getName()+"方法");
}
}
2.编写xml文件 开启和配置aop
<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<bean id="beforelog" class="log.BeforeLog"/>
<bean id="afterlog" class="log.AfterLog"/>
<bean id="service" class="service.MyServiceImpl"/>
<aop:config>
<!-- 配置切入点:切入点名称 在那个类的那个方法上执行-->
<aop:pointcut id="pointcut" expression="execution(* service.MyServiceImpl.*(..))"/>
<!-- 在哪执行 执行什么-->
<aop:advisor advice-ref="afterlog" pointcut-ref="pointcut"/>
<aop:advisor advice-ref="beforelog" pointcut-ref="pointcut"/>
</aop:config>
</beans>
3.测试:
ApplicationContext context = new ClassPathXmlApplicationContext("test.xml");
MyService service = context.getBean("service", MyService.class);
service.add();