引入依赖
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.11</version>
</dependency>
maven仓库改为阿里云
<repositories>
<repository>
<id>maven-ali</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
</repositories>
定义service接口和实现类,定义横切关注点,测试代码,随便写的,不要深究。
//横切关注点
public class TimeHandler {
public void printBefore(){
System.out.println("printBefore 日志 time = "+ LocalDateTime.now().toString());
}
public void printAfter(){
System.out.println("printAfter 日志 time = "+ LocalDateTime.now().toString());
}
}
配置切面,添加schema
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.2.xsd"
xmlns:aop="http://www.springframework.org/schema/aop"
配置bean和aop
<bean id="timeHandler" class="net.test.java.aop.TimeHandler"/>
<bean id="userService" class="net.test.java.service.UserServiceImpl"/>
<!--aop配置-->
<aop:config>
<!--横切关注点-->
<aop:aspect id="timeAspect" ref="timeHandler">
<!--定义切入点表达式-->
<aop:pointcut id="allMethodLogPointCut" expression="execution(* net.test.java.service.UserServiceImpl.*(..))"/>
<!--配置前置通知和后置通知-->
<aop:before method="printBefore" pointcut-ref="allMethodLogPointCut"/>
<aop:after method="printAfter" pointcut-ref="allMethodLogPointCut"/>
</aop:aspect>
</aop:config>
运行效果图