日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Spring教程:Spring中基于AOP的XML架構(gòu)

Spring 中基于 AOP 的 XML架構(gòu)

為了在本節(jié)的描述中使用 aop 命名空間標(biāo)簽,你需要導(dǎo)入 spring-aop 架構(gòu),如下所述:




   


你還需要在你的應(yīng)用程序的 CLASSPATH 中使用以下 AspectJ 庫文件。這些庫文件在一個 AspectJ 裝置的 ‘lib’ 目錄中是可用的,否則你可以在 Internet 中下載它們。(注:aspectjweaver.jar 已包含其他包)

  • aspectjrt.jar

  • aspectjweaver.jar

  • aspectj.jar

  • aopalliance.jar

 聲明一個 aspect

一個 aspect 是使用 元素聲明的,支持的 bean 是使用 ref 屬性引用的,如下所示:


   
   ...
   


...

這里,“aBean” 將被配置和依賴注入,就像前面的章節(jié)中你看到的其他的 Spring bean 一樣。

聲明一個切入點

一個切入點有助于確定使用不同建議執(zhí)行的感興趣的連接點(即方法)。在處理基于配置的 XML 架構(gòu)時,切入點將會按照如下所示定義:


   
   
   ...
   


...

下面的示例定義了一個名為 “businessService” 的切入點,該切入點將與 com.tutorialspoint 包下的 Student 類中的 getName() 方法相匹配:


   
   
   ...
   


...

聲明建議

你可以在中使用元素聲明任意五種類型的通知,如下:


   
      
      
      
      
      
      
      
      
      
      
      
      
      
   ...
   


...

你可以對不同的建議使用相同的 doRequiredTask 或者不同的方法。這些方法將會作為 aspect 模塊的一部分來定義。

基于 AOP 的 XML 架構(gòu)的示例

為了理解上面提到的基于 AOP 的 XML 架構(gòu)的概念,讓我們編寫一個示例,可以實現(xiàn)幾個建議。為了在我們的示例中使用幾個建議,讓我們使 Eclipse IDE 處于工作狀態(tài),然后按照如下步驟創(chuàng)建一個 Spring 應(yīng)用程序:

步驟 描述
1 創(chuàng)建一個名為 SpringExample 的項目,并且在所創(chuàng)建項目的 src 文件夾下創(chuàng)建一個名為 com.tutorialspoint 的包。
2 使用 Add External JARs 選項添加所需的 Spring 庫文件,就如在 Spring Hello World Example 章節(jié)中解釋的那樣。
3 在項目中添加 Spring AOP 指定的庫文件 aspectjrt.jar, aspectjweaver.jaraspectj.jar
4 com.tutorialspoint 包下創(chuàng)建 Java 類 Logging, StudentMainApp。
5 src 文件夾下創(chuàng)建 Beans 配置文件 Beans.xml。
6 最后一步是創(chuàng)建所有 Java 文件和 Bean 配置文件的內(nèi)容,并且按如下解釋的那樣運行應(yīng)用程序。

這里是 Logging.java 文件的內(nèi)容。這實際上是 aspect 模塊的一個示例,它定義了在各個點調(diào)用的方法。

package com.tutorialspoint;
public class Logging {
   /** 
    * This is the method which I would like to execute
    * before a selected method execution.
    */
   public void beforeAdvice(){
      System.out.println("Going to setup student profile.");
   }
   /** 
    * This is the method which I would like to execute
    * after a selected method execution.
    */
   public void afterAdvice(){
      System.out.println("Student profile has been setup.");
   }
   /** 
    * This is the method which I would like to execute
    * when any method returns.
    */
   public void afterReturningAdvice(Object retVal){
      System.out.println("Returning:" + retVal.toString() );
   }
   /**
    * This is the method which I would like to execute
    * if there is an exception raised.
    */
   public void AfterThrowingAdvice(IllegalArgumentException ex){
      System.out.println("There has been an exception: " + ex.toString());   
   }  
}

下面是 Student.java 文件的內(nèi)容:

package com.tutorialspoint;
public class Student {
   private Integer age;
   private String name;
   public void setAge(Integer age) {
      this.age = age;
   }
   public Integer getAge() {
      System.out.println("Age : " + age );
      return age;
   }
   public void setName(String name) {
      this.name = name;
   }
   public String getName() {
      System.out.println("Name : " + name );
      return name;
   }  
   public void printThrowException(){
       System.out.println("Exception raised");
       throw new IllegalArgumentException();
   }
}

下面是 MainApp.java 文件的內(nèi)容:

package com.tutorialspoint;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
   public static void main(String[] args) {
      ApplicationContext context = 
             new ClassPathXmlApplicationContext("Beans.xml");
      Student student = (Student) context.getBean("student");
      student.getName();
      student.getAge();      
      student.printThrowException();
   }
}

下面是配置文件 Beans.xml




   
      
         
         
         
         
         
      
   

   
   
      
            
   

   
    


一旦你已經(jīng)完成的創(chuàng)建了源文件和 bean 配置文件,讓我們運行一下應(yīng)用程序。如果你的應(yīng)用程序一切都正常的話,這將會輸出以下消息:

Going to setup student profile.
Name : Zara
Student profile has been setup.
Returning:Zara
Going to setup student profile.
Age : 11
Student profile has been setup.
Returning:11
Going to setup student profile.
Exception raised
Student profile has been setup.
There has been an exception: java.lang.IllegalArgumentException
.....
other exception content

讓我們來解釋一下上面定義的在 com.tutorialspoint 中 選擇所有方法的 。讓我們假設(shè)一下,你想要在一個特殊的方法之前或者之后執(zhí)行你的建議,你可以通過替換使用真實類和方法名稱的切入點定義中的星號(*)來定義你的切入點來縮短你的執(zhí)行。




   
   
      
      
      
   
   

   
   
      
            
   

   
    


如果你想要執(zhí)行通過這些更改之后的示例應(yīng)用程序,這將會輸出以下消息:

Going to setup student profile.
Name : Zara
Student profile has been setup.
Age : 11
Exception raised
.....
other exception content

標(biāo)題名稱:創(chuàng)新互聯(lián)Spring教程:Spring中基于AOP的XML架構(gòu)
網(wǎng)頁網(wǎng)址:http://m.5511xx.com/article/cdjdihc.html