定义一个包含增强方法的javaBean(最终增强)
使用Schema
1.AroundLogger类
1 //定义一个包含增强方法的javaBean 2 public class AroundLogger{ 3 //注解方式的环绕增强处理 4 private static final Logger log = Logger.getLogger(AroundLogger.class); 5 public Object aroundLogger(ProceedingJoinPoint jp){ 6 log.info("a调用"+jp.getTarget()+"的"+jp.getSignature().getName()+"方法,方法参数是:" 7 +Arrays.toString(jp.getArgs())); 8 try { 9 Object result = jp.proceed();//调用目标方法,获取目标方法的返回值 10 log.info("a调用"+jp.getTarget()+"的"+jp.getSignature().getName()+"方法,方法返回值是:" 11 +result); 12 return result; 13 } catch (Exception e) { 14 log.error(jp.getSignature().getName()+"方法抛出异常"+e); 15 e.printStackTrace(); 16 } catch (Throwable e) { 17 // TODO Auto-generated catch block 18 e.printStackTrace(); 19 } 20 return null; 21 } 22 }
2.spring配置文件
1 <bean id="dao" class="com.dao.impl.IUserDaoImpl"></bean> 2 <bean id="biz" class="com.biz.impl.IUserBizImpl"> 3 <property name="dao" ref="dao"></property> 4 </bean> 5 <!-- 声明增强方法所在的类 --> 6 <bean id="thelogger" class="com.aop.AroundLogger"></bean> 7 <!-- 配置切面 --> 8 <aop:config> 9 <!-- 定义切入点 --> 10 <aop:pointcut expression="execution(* com.biz.IUserBiz.* (..))" id="pointcut"/> 11 <!-- 引入包含增强的bean --> 12 <aop:aspect ref="thelogger"> 13 <!--将aroundLogger方法定义为最终增强并引入切入点 --> 14 <aop:around method="aroundLogger" pointcut-ref="pointcut"/> 15 </aop:aspect> 16 </aop:config>
3.测试类同使用Schema配置切面
4.测试结果