1. 程式人生 > >Spring 詳解(二)------- AOP概念以及兩種實現方式

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 文字域
  
  -