Spring Aop实例

  1. 起因:这两天遇到几个业务逻辑是要在文件审核通过后去调用好几个第三方接口同步过去,但是调用第三方接口又得把方法写在Service层中,想了一下这样极度耦合,为了贯彻Spring良好的解耦性所以我采用Spring 的AOP。
  2. 过程:一开始在网上找很多注解类型的使用AOP方式发现老是调用不到也不报错,不知道自己是不是spring版本的问题(spring版本用的4.2.2),为了节省时间还是用XML的方式实现。好了废话不多说看源码怎么搞。
    1. 首先在代码中写好切面类
      package com.qpedu.aop;
      
      import java.net.SocketTimeoutException;
      
      import org.slf4j.Logger;
      import org.slf4j.LoggerFactory;
      
      import com.qpedu.entity.file.MicroVideo;
      
      /**
       * 我这里只用到了后置通知所以就用这个举例了
       */
      public class MessageCommonAop {
      	
      	private Logger logger = LoggerFactory.getLogger(MessageCommonAop.class);
      	
          //后置通知
          public void commitTransaction(String reviewBy, MicroVideo video, boolean agreed, String message){
          	
          	System.out.println(reviewBy);
          	System.out.println(video.getName());
          	System.out.println(agreed);
              System.out.println(message);
          }
          
      }
      
    2.  接着在applicationContext.xml中,配置切面
    3.     <!-- 首先将切面类注册到spring容器中 -->
          <bean id="messageCommonAop" class="com.qpedu.aop.MessageCommonAop"/>
          <!-- 配置AOP -->
      	<aop:config>
              <!-- 带参数的访问切面类后面加上"and args(reviewBy,video,agreed,message)" 并起一个别名 -->
              <aop:pointcut expression="execution(* com.qpedu.service.impl.file.MicroVideoServiceImpl.reviewBind(..)) and args(reviewBy,video,agreed,message)" id="reviewBind" />
              <!-- 审核通过后向消息中心发送通知 -->
              <aop:aspect ref = "messageCommonAop">
                  <!--method 中写切面类中的方法 pointcut-ref中写方法别名-->
      	        <aop:after-returning method="commitTransaction" pointcut-ref="reviewBind"/>
              </aop:aspect>
          </aop:config>

      好了这样当调用reviewBind方法完成后会去调用messageCommonAop切面类中的commitTransaction方法,当以后业务逻辑有所改动的时候直接改切面类中的代码就好了,这样就能达到解耦的目的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值