為什麼要AOP?
說明Spring AOP之前,必須先提一個場景
當有個功能是要記錄log,會怎麼做?
最簡單的方式就是,直接在功能前後加上log
public class HelloSpeaker {
public void hello(String name) {
logger.log(Level.INFO, "hello starts ...");
System.out.println("Hello, " + name); // 主功能
logger.log(Level.INFO, "hello ends.");
}
}
這樣做的缺點是:商業邏輯和日誌混在一起,不好維護Design Pattern
的Proxy Pattern(代理模式)
,可以解決這個問題。
而AOP
就是以Proxy Pattern
的概念實作的。