赞
踩
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.aistart</groupId> <artifactId>Spring_demo</artifactId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>Aspect_demo</artifactId> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>5.3.30</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.6</version> </dependency> </dependencies> </project>
package com.aistart.aspect; import org.aspectj.lang.ProceedingJoinPoint; public class LogAspect { public void LogInfoAfter(){ System.out.println("后置日志"); } public void LogInfoBefore(){ System.out.println("前置日志"); } public void doAfterReturning(String result) { System.out.println("后置通知, 返回值: " + result); } public void doAfterThrowing(Exception e) { System.out.println("后置通知, 异常是: " + e); } public Object doAround(ProceedingJoinPoint pjp) throws Throwable { System.out.println("-----------------------"); System.out.println("环绕通知: 进入方法"); Object o = pjp.proceed(); System.out.println("环绕通知: 退出方法"); return o; } }
package com.aistart.service.impl; import com.aistart.service.StudentService; import org.springframework.stereotype.Service; @Service public class StudentServiceImpl implements StudentService { @Override public void insertStudent() { System.out.println("加入一个学生的业务"); // System.out.println(1/0); } }
package com.aistart.service;
public interface StudentService {
void insertStudent();
}
<?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" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.aistart.service"></context:component-scan> <context:annotation-config></context:annotation-config> <!-- <bean id="studentService" class="com.aistart.service.impl.StudentServiceImpl"/>--> <!--增强类/切面对象--> <bean id="logAspect" class="com.aistart.aspect.LogAspect"/> <!-- bean definitions here --> <aop:config> <aop:aspect ref="logAspect"> <!--代理的功能--> <!--execution([修饰符] 返回类型 全限类名.函数名() )--> <aop:pointcut id="studentServiceCut" expression="execution(* com.aistart.service.impl.StudentServiceImpl.*(..))"/> <aop:pointcut id="studentServiceCut1" expression="execution(* com.aistart.service.impl.StudentServiceImpl.*(..))"/> <aop:before method="LogInfoBefore" pointcut-ref="studentServiceCut"></aop:before> <aop:after method="LogInfoAfter" pointcut-ref="studentServiceCut"></aop:after> <aop:around method="doAround" pointcut-ref="studentServiceCut"></aop:around> <aop:after-throwing throwing="e" method="doAfterThrowing" pointcut-ref="studentServiceCut"></aop:after-throwing> <aop:after-returning returning="result" method="doAfterReturning" pointcut-ref="studentServiceCut"></aop:after-returning> </aop:aspect> </aop:config> </beans>
package com.aistart.service.impl; import com.aistart.service.StudentService; import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; import static org.junit.Assert.*; public class StudentServiceImplTest { @Test public void insertStudent() { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); StudentService studentService = context.getBean( StudentService.class); studentService.insertStudent(); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。