本文主要是介绍Spring4笔记----为什么要使用AOP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
希望实现;
一:在程序执行期间追踪正在发生的活动
二:希望计算器值处理整数的计算;
要实现以上要求:我们可以在调用方法的前后对正在发生的活动进行追踪,
代码:(1)运算的接口
package com.spring.aop;
public interface ArithmeticCalculator {int add(int i, int j);int sub(int i, int j);int mul(int i, int j);int div(int i, int j);}
(2)运算的具体实现类
public class ArithmeticCalculatorImpl implements ArithmeticCalculator {@Overridepublic int add(int i, int j) {int result = i + j;return result;}@Overridepublic int sub(int i, int j) {int result = i - j;return result;}@Overridepublic int mul(int i, int j) {int result = i * j;return result;}@Overridepublic int div(int i, int j) {int result = i / j;return result;}
}
(3)在调用运算方法前后对正在发生的行为追踪
public class ArithmeticCalculatorLoggingImpl implements ArithmeticCalculator {@Overridepublic int add(int i, int j) {System.out.println("The method add begins with [" + i + "," + j + "]");int result = i + j;System.out.println("The method add ends with " + result);return result;}@Overridepublic int sub(int i, int j) {System.out.println("The method sub begins with [" + i + "," + j + "]");int result = i - j;System.out.println("The method sub ends with " + result);return result;}@Overridepublic int mul(int i, int j) {System.out.println("The method mul begins with [" + i + "," + j + "]");int result = i * j;System.out.println("The method mul ends with " + result);return result;}@Overridepublic int div(int i, int j) {System.out.println("The method div begins with [" + i + "," + j + "]");int result = i / j;System.out.println("The method div ends with " + result);return result;}}
在调用每个方法前后,把正在发生的活动进行追踪,但是同时带来了一些问题:
(1)原有的业务方法急剧膨胀. 每个方法在处理核心逻辑的同时还必须兼顾其他多个关注点. 程序不仅要关注运算方法的实现,还要追踪正在发生的行为。
(2)如果日志需求发生变化, 必须修改所有模块.如果需求发生变化,我们每个运算模块的追踪模块都需要改变。
解决这个问题可以使用动态代理。
这篇关于Spring4笔记----为什么要使用AOP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!