一、创建一个meven webApp工程,并在pox.xml中导入依赖
<?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>
<groupId>string02</groupId>
<artifactId>string02</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>string02 Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<spring.version>5.1.6.RELEASE</spring.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.14</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.16</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.3.16</version>
</dependency>
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
<!-- spring-webmvc 可以导入spring全部核心jar包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.4</version>
</dependency>
</dependencies>
</project>
二、创建目标接口和实现类
UserDao:
package com.hxic.aop;
public interface UserDao {
public void addUser();
public void deleteUser();
}
UserDaoImpl:
package com.hxic.aop;
public class UserDaoImpl implements UserDao {
@Override
public void addUser() {
//int i = 10 / 0;
System.out.println("添加用户");
}
@Override
public void deleteUser() {
System.out.println("====用户管理模块:删除用户====");
}
}
ScoreDao:
package com.hxic.aop;
public interface ScoreDao {
public void addScore();
public void deleteScore();
}
ScoreDaoImpl:
package com.hxic.aop;
public class ScoreDaoImpl implements ScoreDao {
@Override
public void addScore() {
System.out.println("添加成绩");
}
@Override
public void deleteScore() {
System.out.println("====成绩管理模块:删除成绩====");
}
}
StudentDao:
package com.hxic.aop;
public interface StudentDao {
public void addStudent();
public void deleteStudent();
}
StudentDaoImpl:
package com.hxic.aop;
public class StudentDaoImpl implements StudentDao {
@Override
public void addStudent() {
//int i = 10 / 0;
System.out.println("添加学生信息");
}
@Override
public void deleteStudent() {
System.out.println("====学生管理模块:删除学生信息====");
}
}
三、创建切面类,
package com.springmvc.aop.xml.bean;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class MyAspect implements MethodInterceptor {
@Override
public Object invoke(MethodInvocation mi) throws Throwable {
//执行目标方法
Object obj = mi.proceed();
log();
return obj;
}
public void log(){
System.out.println("记录日志......");
}
}
四、更改spring配置文件
<?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 id="userService" class="com.hxic.service.UserServiceImpl"/>
<bean id="annotationPointCut" class="com.hxic.diy.AnnotationPointCut"/>
<aop:aspectj-autoproxy/>
</beans>
五、编写测试类进行测试
package springmvc.aop.bean;
import com.hxic.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = context.getBean("userService", UserService.class);
userService.add();
}
}
测试成功: