Jquery中文網 www.afdoqc.live
Jquery中文網 >  腳本編程  >  java  >  正文 AOP編程入門--Java篇

AOP編程入門--Java篇

發布時間:2019-10-12   編輯:www.afdoqc.live
jquery中文網為您提供AOP編程入門--Java篇等資源,歡迎您收藏本站,我們將為您提供最新的AOP編程入門--Java篇資源
<script>ec(2);</script>
Aspect Oriented Programming(AOP),面向切面編程,是一個比較熱門的話題。AOP主要實現的目的是針對業務處理過程中的切面進行提取,它所面對的是處理過程中的某個步驟或階段,以獲得邏輯過程中各部分之間低耦合性的隔離效果。比如我們最常見的就是日志記錄了,舉個例子,我們現在提供一個服務查詢學生信息的,但是我們希望記錄有誰進行了這個查詢。如果按照傳統的OOP的實現的話,那我們實現了一個查詢學生信息的服務接口(StudentInfoService)和其實現類(StudentInfoServiceImpl.java),同時為了要進行記錄的話,那我們在實現類(StudentInfoServiceImpl.java)中要添加其實現記錄的過程。這樣的話,假如我們要實現的服務有多個呢?那就要在每個實現的類都添加這些記錄過程。這樣做的話就會有點繁瑣,而且每個實現類都與記錄服務日志的行為緊耦合,違反了面向對象的規則。那么怎樣才能把記錄服務的行為與業務處理過程中分離出來呢?看起來好像就是查詢學生的服務自己在進行,但是背后日志記錄對這些行為進行記錄,但是查詢學生的服務不知道存在這些記錄過程,這就是我們要討論AOP的目的所在。AOP的編程,好像就是把我們在某個方面的功能提出來與一批對象進行隔離,這樣與一批對象之間降低了耦合性,可以就某個功能進行編程。
我們直接從代碼入手吧,要實現以上的目標,我們可以使用一個動態代理類(Proxy),通過攔截一個對象的行為并添加我們需要的功能來完成。Java中的java.lang.reflect.Proxy類和java.lang.reflect.InvocationHandler接口為我們實現動態代理類提供了一個方案,但是該方案針對的對象要實現某些接口;如果針對的目的是類的話,cglib為我們提供了另外一個實現方案。等下會說明兩者的區別。
一、接口的實現方案:
1)首先編寫我們的業務接口(StudentInfoService.java):
public interface StudentInfoService{
void findInfo(String studentName);
}
及其實現類(StudentInfoServiceImpl.java):
public class StudentInfoServiceImpl implements StudentInfoService{
public void findInfo(String name){
System.out.println("你目前輸入的名字是:" name);
}
}
2)現在我們需要一個日志功能,在findInfo行為之前執行并記錄其行為,那么我們就首先要攔截該行為。在實際執行的過程中用一個代理類來替我們完成。Java中為我們提供了實現動態代理類的方案:

您可能感興趣的文章:
jsp開發入門(1)--安裝配置jsp環境
php變量與常量-php入門教程(2)
JSP入門教程(1)-基礎知識
JSP開發入門(2)-JSP語法的基本原理
javascript基礎教程(1)-語言特點
JQuery入門—編寫一個簡單的JQuery應用案例
JQuery入門——事件切換之toggle()方法應用介紹
jQuery UI 教程之一 ——入門
JQuery入門——用映射方式綁定不同事件應用示例
JSP開發入門(4)-JSP的內部對象

[關閉]
英格兰足球队