欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > SpringMVC ,ioc和aop

SpringMVC ,ioc和aop

2024/12/31 2:13:12 来源:https://blog.csdn.net/m0_72407563/article/details/144292654  浏览:    关键词:SpringMVC ,ioc和aop

IOC和AOP

IOC

控制反转,将应用程序的控制权交给spring容器管理,而不是应用程序本身

1.创建一个mapper,测试用, 就写个普通方法
public class UserMapper {public void addUser(){System.out.println("dao层新增");}
}
2.di.xml,将UserMapper注册入spring的bean
<bean id="userMapper" class="mapper.UserMapper"></bean>
3.测试类,从spring的容器里获取对象的实例化权限
public class Test1 {@Testpublic void test01() {UserMapper userMapper = (UserMapper) context.getBean("userMapper");userMapper.addUser();}
}

AOP

1.创建操作切面类
2.在spring.xml里配置切面和切点

public class LoggerAdvice {//创建日志对象Logger logger = Logger.getLogger(LoggerAdvice.class);//前置增强public void before(JoinPoint jp){logger.info("前置增强,调用"+jp.getTarget()+"的"+jp.getSignature().getName()+"参数是"+ Arrays.toString(jp.getArgs()));}//后置增强public void after(JoinPoint jp,Object ex){logger.info("后置增强,调用"+jp.getTarget()+"的"+jp.getSignature().getName()+"参数是"+ Arrays.toString(jp.getArgs())+"返回值:"+ex);}//异常增强public void afterThrowing(JoinPoint jp,Exception ex){logger.info("异常增强,调用"+jp.getTarget()+"的"+jp.getSignature().getName()+"参数是"+ Arrays.toString(jp.getArgs())+"异常:"+ex.getMessage());}//环绕增强public void around(ProceedingJoinPoint pj){try {logger.info("前置增强,调用"+pj.getTarget()+"的"+pj.getSignature().getName()+"参数是"+ Arrays.toString(pj.getArgs()));logger.info("后置增强,调用"+pj.getTarget()+"的"+pj.getSignature().getName()+"参数是"+ Arrays.toString(pj.getArgs())+"返回值:"+pj.proceed());} catch (Throwable e) {logger.info("异常增强,调用"+pj.getTarget()+"的"+pj.getSignature().getName()+"参数是"+ Arrays.toString(pj.getArgs())+"异常:"+e.getMessage());e.printStackTrace();}}
}

定义切面和切点
在com.j4061.springmybatis.service包及其子包下的所有公共方法执行前后添加日志记录功能

<!-- 1.这里定义了一个名为loggerAdvice的Bean,其类型为com.j4061.springmybatis.util.LoggerAdvice -->
<bean id="loggerAdvice" class="com.j4061.springmybatis.util.LoggerAdvice"></bean><aop:config><!-- 2.定义了切入点表达式,表示匹配com.j4061.springmybatis.service包及其子包下所有公共方法的执行。这里的public*表示任何返回类型的公共方法,*.*表示任何类中的任何方法,(..)表示接受任意数量和类型的参数 --><aop:pointcut id="loggerOpintCut" expression="execution(public * com.j4061.springmybatis.service..*.*(..))"/><aop:aspect ref="loggerAdvice"><!-- 前置增强 --><aop:before method="before" pointcut-ref="loggerOpintCut"></aop:before><!-- 后置增强 --><aop:after-returning returning="ex" method="after" pointcut-ref="loggerOpintCut"></aop:after-returning><!-- 异常增强 --><aop:after-throwing method="afterThrowing" throwing="ex" pointcut-ref="loggerOpintCut"></aop:after-throwing><!-- 环绕增强 --><aop:around method="around" pointcut-ref="loggerOpintCut"></aop:around></aop:aspect></aop:config>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com