导入依赖:
<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();