目录结构如下
prom.xml所需的依赖如下
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.9</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.9</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.3.9</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.3.9</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.3.9</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.3.9</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.3.9</version>
</dependency>
AspectLog
package qst.Aop;
import org.aspectj.lang.ProceedingJoinPoint;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component("aspectLog")
public class AspectLog {
public Object testlog(ProceedingJoinPoint joinPoint)throws Throwable{
System.out.println("执行前Log_time"+new Date());
Object object = joinPoint.proceed();
System.out.println("执行后Log_time"+new Date());
return object;
}
}
ProductService
package qst.Service;
import org.springframework.stereotype.Component;
@Component("s")
public class ProductService {
public void sayHello(){
System.out.println("被切的对象");
}
}
Test
package qst.Service;
import org.springframework.stereotype.Component;
@Component("s")
public class ProductService {
public void sayHello(){
System.out.println("被切的对象");
}
}
TestDemo
package qst.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import qst.Service.ProductService;
public class TestDemo {
public static void main(String[] args) {
ProductService service = ( ProductService)new ClassPathXmlApplicationContext("Reontext-application.xml").getBean("s");
service.sayHello();
}
}
Reontext-application.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 id="s" class="qst.Service.ProductService"/>
<bean id="aspectLog" class="qst.Aop.AspectLog"/>
<aop:config>
<aop:pointcut id="logCutpoint"
expression="execution(* qst.Service.*.*(..))"/>
<aop:aspect id="logAspect" ref="aspectLog">
<aop:around pointcut-ref="logCutpoint" method="testlog"/>
</aop:aspect>
</aop:config>
</beans>
运行结果如下: