Spring 詳解(二)------- AOP概念以及兩種實現方式
target:目標類,需要被代理的類。例如:ArithmeticCalculator
Joinpoint(連線點):所謂連線點是指那些可能被攔截到的方法。例如:所有的方法
PointCut 切入點:已經被增強的連線點。例如:add()
advice:通知/增強,增強程式碼。例如:showRaram、showResult
Weaving(織入):是指把增強 advice 應用到目標物件 target 來建立新的代理物件proxy的過程.
proxy 代理類:通知+切入點
Aspect(切面)::是切入點 pointcut 和通知 advice 的結合
2. AOP 的作用
當我們為系統做引數驗證,登入許可權驗證或者日誌操作等,為了實現程式碼複用,我們可能把日誌處理抽離成一個新的方法。但是這樣我們仍然必須手動插入這些方法,這樣的話模組之間高耦合,不利於後期的維護和功能的擴充套件,有了 AOP 我們可以將功能抽成一個切面,程式碼複用好,低耦合。
3. AOP 的通知型別
Spring按照通知Advice在目標類方法的連線點位置,可以分為5類
前置通知 org.springframework.aop.MethodBeforeAdvice
在目標方法執行前實施增強,比如上面例子的 before()方法
後置通知 org.springframework.aop.AfterReturningAdvice
在目標方法執行後實施增強,比如上面例子的 after()方法
環繞通知 org.aopalliance.intercept.MethodInterceptor
在目標方法執行前後實施增強
異常丟擲通知 org.springframework.aop.ThrowsAdvice
在方法丟擲異常後實施增強
引介通知 org.springframework.aop.IntroductionInterceptor
在目標類中新增一些新的方法和屬性
IndexSearcher searcher=new IndexSearcher(reader);
// 4.建立搜尋的Query
QueryParser parser = new QueryParser("content", new StandardAnalyzer());
Query query = parser.parse("java"); //查詢保護北京的文件
//5.根據search搜尋並且返回TopDocs
TopDocs tds = searcher.search(query,www.dasheng178.com 10); //查詢10條
//6. 根據TopDocs獲取ScoreDos物件
ScoreDoc [] docs = tds.scoreDocs;
for(ScoreDoc sd : docs){
//7.根據seracher和scoreDoc物件獲取具體的Document物件
//8.根據Doucment物件獲取需要的之
Document d =www.douniu157.com searcher.doc(sd.doc);
String content =www.xiaomiyulezc.com d.get("content");
String path = d.get("path");
String name www.xianggelila2.com= d.get("name");
System.out.println("name= "www.thd178.com/+ name + www.gcyL157.com" path "+ path +" content "+ content);
}
reader.close();
域的詳細介紹
是否分詞
分詞的作用是為了索引
需要分詞: 檔名稱,檔案內容
不需要分詞: 不需要索引的域不需要分詞,還有就是分詞後毫無意義的域不需要分詞
比如Id,身份證號
是否索引
索引的目的是為了搜尋
需要搜尋的域一定要建立索引,只有建立了索引才能被搜尋出來。
不需要搜尋的域可以不建立索引
需要索引:檔名稱、檔案內容
是否儲存: 看個人需要,將內容放入document文件中儲存出來,會額外佔用磁碟空間。
如果需要搜尋的時候,需要馬上顯示出來,可以放到document中,也就是需要儲存,這樣查詢顯示速度快。
域的各種型別
StringField 字串
LongField long型
StoredField 圖片地址
TextField 文字域
-