天天看點

Java架構之Spring AOP (Aspect Oriented Programming) 面向切面程式設計是什麼?Spring AOP是什麼?它是如何做到的?(原理)

Spring AOP是什麼?

Spring AOP是面向切面程式設計,将功能代碼從業務邏輯代碼中分離出來。

它允許程式通過分離的應用業務邏輯與系統級别服務。

程式員隻需專注自己的業務邏輯,而不需要管系統級服務。

容器中的對象能享有容器中的公共服務(日志、安全)。

它是如何做到的?(原理)

通過動态代理做到這一點。

用到了代理模式,代理模式是一種靜态代理,而動态代理就是利用反射和動态編譯将代理模式變成動态的。

得知被代理類後通過反射得知他的一切資訊,然後動态編譯成代理類的class檔案(動态組裝成代理類,生成java檔案,再編譯成class檔案)。