Spring AOP 高级特性与应用实践
1. 为 Bean 引入行为
在面向对象编程中,有时一组类可能共享某种共同行为。按照传统方式,它们需要继承同一个基类或实现同一个接口,但这其实是一个横切关注点,可通过 AOP 进行模块化处理。而且 Java 的单继承机制使得一个类最多只能继承一个基类,无法同时从多个实现类继承行为。
AOP 中的引入(Introduction)是一种特殊的通知类型,它允许对象通过为接口提供实现类来动态实现该接口,就好像对象在运行时扩展了实现类一样。并且,还能同时为对象引入多个接口及其对应的实现类,达到类似多重继承的效果。
假设我们有两个接口MaxCalculator和MinCalculator,分别定义了max()和min()操作:
package com.apress.springrecipes.calculator; public interface MaxCalculator { public double max(double a, double b); }package com.apress.springrecipes.calculator; public interface MinCalculator { public double min(double a, double b); }