- 对于AOP的讲解,请参考http://blog.csdn.net/liujiahan629629/article/details/18864211
- 下面给出一个例子给大家参考
- 定义接口
public interface DempartmentService {
public void addDempart(String depa);
}
4.实现接口
public class DepartmentServiceImpl implements DempartmentService {
public void addDempart(String depa) {
// TODO Auto-generated method stub
System.out.println("添加了部门"+depa);
}
}
5.实现日志功能
package com.spring.test;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
public class DepartLog {
public void beforelog(JoinPoint jp)
{
System.out.println("开始日志");
}
public void afterlog(JoinPoint jp)
{
System.out.println("结束日志");
}
public void aroundlog(ProceedingJoinPoint pi) throws Throwable
{
System.out.println("开始环绕日志");
pi.proceed();
System.out.println("结束环绕日志");
}
public void afterre(JoinPoint jp) {
System.out.println("方法执行完毕");
}
public void throwlog(Throwable ex)
{
System.out.println(ex.getMessage());
}
}
6.测试代码
package com.spring.test;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
public class DepartLog {
public void beforelog(JoinPoint jp)
{
System.out.println("开始日志");
}
public void afterlog(JoinPoint jp)
{
System.out.println("结束日志");
}
public void aroundlog(ProceedingJoinPoint pi) throws Throwable
{
System.out.println("开始环绕日志");
pi.proceed();
System.out.println("结束环绕日志");
}
public void afterre(JoinPoint jp) {
System.out.println("方法执行完毕");
}
public void throwlog(Throwable ex)
{
System.out.println(ex.getMessage());
}
}
7.配制文件
<?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
http://www.springframework.org/schema/aop/spring-aop.xsd">
<bean id="departmentservice" class="com.spring.aop.DepartmentServiceImpl"></bean>
<bean id="deptlog" class="com.spring.test.DepartLog"> </bean>
<!-- 前置通知 -->
<aop:config>
<!-- 切面 -->
<aop:aspect id="log" ref="deptlog">
<!-- 切点 -->
<aop:pointcut expression="execution(* com.spring.aop.*.*(..))" id="biz"/>
<!-- 前置通知 -->
<aop:before method="beforelog" pointcut-ref="biz"/>
<!-- 后置通知 -->
<aop:after method="afterlog" pointcut-ref="biz"/>
<!-- 环绕通知 -->
<aop:around method="aroundlog" pointcut-ref="biz"/>
<!-- 返回通知 -->
<aop:after-returning method="afterre" pointcut-ref="biz"/>
<!-- 异常通知 -->
<!-- <aop:after-throwing method="throwlog" pointcut-ref="biz" /> -->
</aop:aspect>
</aop:config>
</beans>
8.项目结构及jar包
9.异常通知会报错,还没找到原因