spring aop学习

错误整理

找不到beans的声明
原因是aop版本的不匹配,如果在联网状态他会自动匹配
但是可以通过查询自己的application.xml文件自己修改上面匹配aop的版本

aop

用法为:在不影响原本业务的情况下,增加新的功能
简单来说,不改变原来输出的代码段,新增一个类存储切入类,切入原来业务的一个点,切入类的输出可以在原来业务的输出之前或者之后
代码如下

public class LogAfter implements AfterReturningAdvice {
    public void afterReturning(Object returnValue, Method method, Object[] args, Object target) throws Throwable {
        System.out.println(target.getClass().getName()+"de"+method.getName()+"方法被执行了"+returnValue);

    }
}

public class Log  implements MethodBeforeAdvice {
    public void before(Method method, Object[] args, Object target) throws Throwable {
        System.out.println(target.getClass().getName()+"DE"+method.getName()+"fangfabeishixing"+args+"shi参数");
    }
}

上面为切入的方法
然后还需要在xml文件中配置aop,方法可以参考配置context的方法,配置完成之后

<aop:config>
        <aop:pointcut id="point" expression="execution(* com.zhang.service.impl.UserServiceImpl.*(..))"/>

        <aop:advisor advice-ref="log" pointcut-ref="point"/>
        <aop:advisor advice-ref="after" pointcut-ref="point"/>
    </aop:config>

这就是执行切入的xml增加代码
使用之前的办法,在xml文件中配置bean,所有类都需要配置到位就可以操作成功
专业来说就叫前置通知 后置通知
这是aop的一种配置方法 配置增强类
第二个aop配置方法 配置切面
这个主要要分注意切面上的切点,从哪里切入,调用的是什么方法

public class diy {
    public void diy(){
        System.out.println("方法执行前");
    }
    public void afterdiy(){
        System.out.println("方法执行后");
    }
}

<aop:aspect ref="diy">
            <aop:pointcut id="point" expression="execution(* com.zhang.service.impl.UserServiceImpl.*(..))"/>
            <aop:before method="diy" pointcut-ref="point"/>
            <aop:after method="afterdiy" pointcut-ref="point"/>
        </aop:aspect>

还可以通过注解的方法来实现切面

@Aspect
public class diy2 {
   public void diy(){
       System.out.println("方法前");
   }
   public void afterdiy(){
       System.out.println("方法后");
   }
   @Around("execution(* com.zhang.service.impl.UserServiceImpl.*(..))")
    public void arounddiy(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("环绕前");
        Object proceed = joinPoint.proceed();
        System.out.println("环绕后");
        System.out.println(proceed);


    }
}

下面的添加到bean标签下就可以了

   <!--让spring识别注解,添加才能成功-->
    <aop:aspectj-autoproxy/>

从这里我们还可以看出来xml配置文件和注解是可以相互转换使用的,具体还是看个人的习惯

整合MyBatis

导入依赖必定是会导入junit mybatis,配置xml文件 测试
mybatis-spring和spring框架和mybatis,Java等的版本都需要对应使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值