3

java web开发(aop编程)

 1 year ago
source link: https://feixiaoxing.blog.csdn.net/article/details/127168715
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

java web开发(aop编程)

嵌入式-老费 已于 2022-10-05 07:06:05 修改 236

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        刚开始看到aop的时候,了解到它是面向切片,觉得还是挺拗口的。不知道应该怎么去理解怎么这么一个概念。后来想了一想,不如先看范例,直接从实例去理解aop或许更容易一点。

        目前参考的文章来自于这个链接,https://www.yiibai.com/spring/spring-aop-examples-advice.html从实例代码来看,aop更类似于用一种拦截器的方法去实现方法与方法直接调用的解耦。也就是说,方法之间的调用不再用硬编码的形式来实现,而是通过applicationContext.xml脚本配置的形式来完成。参考的实例内容略多,这里整理成一个完整的范例,大家可以逐步调试分析。

1、利用IDEA创建工程,选择“Spring”和“Application”

2、工程命名为Hello,创建完毕后,IDEA会自动下载好spring的jar库

3、创建CustomerService.java文件



newCodeMoreWhite.png

4、编写Test测试类Test.java,这部分和之前差别不大



newCodeMoreWhite.png

5、准备各种各样的劫持类,比如事先劫持类、事后劫持类、异常劫持类、全部劫持类等

5.1 事前劫持类,继承自MethodBeforeAdvice

5.2 事后劫持类,继承自AfterReturningAdvice

5.3 异常劫持,继承自ThrowsAdvice

        注意到,这里的劫持方法没有@Override声明。

5.4 全部劫持,继承自MethodInterceptor



newCodeMoreWhite.png

        这个劫持方法是功能最完整的劫持方法。此外,在invoke方法中,也需要自己调用methodInvocation.proceed来调用被劫持的函数。此外,对于异常,invoke方法也可以做到劫持访问。

6、准备和创建applicaitonContext.xml文件,方法参照上一篇blog内容



newCodeMoreWhite.png

7、调试Test.java文件,不妨选择hijackBeforeMethodBean做测试,右击选择“Run Test.main函数”,

不出意外,就可以看到这样的打印结果,

5a4af21b9e2f4aabacf2b17136edf94f.png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK