错误整理
找不到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等的版本都需要对应使用