2014-02-07 74 views
4

如您所知@RequestMapping習慣於攔截HttpServletRequestSpring的@RequestMapping如何工作?

我想知道@Controller @RequestMapping如何將來自客戶端的請求綁定到java類中的特定方法?

我想寫一個類似的Java應用程序執行相同的功能,想象一下,我們有這樣一個類:

@Actor 
public class JavaForever { 

    @Department(value="IT") 
    public void departmentIT(){...} 

    @Department(value="Physic") 
    public void departmentPhysic(){...} 
} 

並有StudentBean類:

public class StudentBean { 

    private String department; 
    private Integer age; 
    //Other class variable 
    //Getters & Setters 
} 

,最後我們有一個測試類是這樣的:

public class TestApplication { 
    //getStudentFromDatabaseMethod() implementation here 

    public static void main(String[] agrs){ 
    List<StudentBean> allStudents = new TestApplication().getStudentFromDatabaseMethod(); 
    //other codes 
    } 
} 

正如你所看到的getStudentFromDatabaseMethod()返回List< StudentBean>,現在的問題是我們如何能夠迫使這個方法來獲取攔截與我們@Department註釋駐留在JavaForeverbefore它返回的任何值...

我們如何能做到這一點???

+2

這太寬泛了。閱讀源代碼。從RequestMappingHandlerMapping類開始。 –

+1

Spring不會爲其「@ Controller」處理程序方法使用AOP。 –

+0

我已經看過那個班,但它有很多額外的方面,使太多的困惑...... – Mehdi

回答

7

這裏是一個全面的介紹

  1. 你識別類春季搜索(註解)。
  2. Spring發現您的@Controller和@RequestMapping註釋。
  3. Spring從@RequestMapping註釋中構建URL值的映射。
  4. 在運行時,當Spring收到請求時,它會在地圖上搜索 URL。當它找到URL時,它會調用標記爲 @RequestMapping的方法。

摘要:

  • 註釋不會什麼。他們是東西的其他類的標記。

首先閱讀Annotation Tutorial。 你需要掃描你的類(在啓動過程中)你的註釋(使用反射),然後適當地處理它們。