成都市网站建设费用及企业站长统计芭乐官方网站下载
news/
2025/10/1 10:38:43/
文章来源:
成都市网站建设费用及企业,站长统计芭乐官方网站下载,国内app开发公司前十名,做网站win7好用么第二章 SpringFramework
五、Spring AOP 面向切面编程
6. Spring AOP 基于 XML 方式实现#xff08;了解#xff09;
6.1 准备工作
加入依赖和基于注解的 AOP 时一样。准备代码把测试基于注解功能时的 Java 类复制到新 module 中#xff0c;去除所有注解。
6.2 配置 Sp…第二章 SpringFramework
五、Spring AOP 面向切面编程
6. Spring AOP 基于 XML 方式实现了解
6.1 准备工作
加入依赖和基于注解的 AOP 时一样。准备代码把测试基于注解功能时的 Java 类复制到新 module 中去除所有注解。
6.2 配置 Spring 配置文件
!-- 配置目标类的bean --
bean idcalculatorPure classcom.alex.aop.imp.CalculatorPureImpl/!-- 配置切面类的bean --
bean idlogAspect classcom.alex.aop.aspect.LogAspect/!-- 配置AOP --
aop:config!-- 配置切入点表达式 --aop:pointcut idlogPointCut expressionexecution(* *..*.*(..))/!-- aop:aspect标签配置切面 --!-- ref属性关联切面类的bean --aop:aspect reflogAspect!-- aop:before标签配置前置通知 --!-- method属性指定前置通知的方法名 --!-- pointcut-ref属性引用切入点表达式 --aop:before methodprintLogBeforeCore pointcut-reflogPointCut/!-- aop:after-returning标签配置返回通知 --!-- returning属性指定通知方法中用来接收目标方法返回值的参数名 --aop:after-returningmethodprintLogAfterCoreSuccesspointcut-reflogPointCutreturningtargetMethodReturnValue/!-- aop:after-throwing标签配置异常通知 --!-- throwing属性指定通知方法中用来接收目标方法抛出异常的异常对象的参数名 --aop:after-throwingmethodprintLogAfterCoreExceptionpointcut-reflogPointCutthrowingtargetMethodException/!-- aop:after标签配置后置通知 --aop:after methodprintLogCoreFinallyEnd pointcut-reflogPointCut/!-- aop:around标签配置环绕通知 --!--aop:around method…… pointcut-reflogPointCut/--/aop:aspect/aop:config6.3 测试
SpringJUnitConfig(locations classpath:spring-aop.xml)
public class AopTest {Autowiredprivate Calculator calculator;Testpublic void testCalculator(){System.out.println(calculator);calculator.add(1,1);}
}7. Spring AOP 对获取 Bean 的影响理解
7.1 根据类型装配 bean
7.1.1 情景一 bean 对应的类没有实现任何接口 根据 bean 本身的类型获取 bean 测试IOC 容器中同类型的 bean 只有一个 正常获取到 IOC 容器中的那个 bean 对象 测试IOC 容器中同类型的 bean 有多个 会抛出 NoUniqueBeanDefinitionException 异常表示 IOC 容器中这个类型的 bean 有多个
7.1.2 情景二
bean 对应的类实现了接口这个接口也只有这一个实现类 测试根据接口类型获取 bean测试根据类获取 bean结论上面两种情况其实都能够正常获取到 bean而且是同一个对象
7.1.3 情景三 声明一个接口 接口有多个实现类 接口所有实现类都放入 IOC 容器 测试根据接口类型获取 bean 会抛出 NoUniqueBeanDefinitionException 异常表示 IOC 容器中这个类型的 bean 有多个 测试根据类获取 bean 正常
7.1.4 情景四 声明一个接口 接口有一个实现类 创建一个切面类对上面接口的实现类应用通知 测试根据接口类型获取 bean 正常 测试根据类获取 bean 无法获取 原因分析 应用了切面后真正放在 IOC 容器中的是代理类的对象目标类并没有被放到 IOC 容器中所以根据目标类的类型从 IOC 容器中是找不到的 7.1.5 情景五
声明一个类创建一个切面类对上面的类应用通知 测试根据类获取 bean能获取到 debug 查看实际类型 7.2 使用总结
对实现了接口的类应用切面 对没实现接口的类应用切面 new 如果使用 AOP 技术目标类有接口必须使用接口类型接收 IoC 容器中代理组件
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923762.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!