Spring的@RequestMapping如何工作?

6

正如您所知道的那样,@RequestMapping 用于拦截 HttpServletRequest

我想知道如何使用 @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 注释进行拦截,该注释位于 JavaForever 类的 before 方法中,在返回任何值之前...

我们该怎么做???


2
这太笼统了。阅读源代码。从 RequestMappingHandlerMapping 类开始。 - Sotirios Delimanolis
1
SpringжЎҶжһ¶дёҚдјҡеңЁе…¶@ControllerеӨ„зҗҶзЁӢеәҸж–№жі•дёӯдҪҝз”ЁAOPгҖӮ - Sotirios Delimanolis
我已经看过那个类,但它有很多额外的方面,让人感到非常困惑... - Mehdi
我有。在这种情况下,您可能希望使用AOP,但是如果您不知道AOP是什么以及Spring如何实现它,那么这也太宽泛了。我建议您阅读文档和一些教程。 - Sotirios Delimanolis
@Mehdi:AOP 是什么意思?仅从类/字段/方法中读取注释与 AOP 没有任何关系。 - Costi Ciudatu
显示剩余5条评论
1个回答

9
这里是一个概述:
  1. 你要为Spring搜索(注释)标识类。
  2. Spring找到了你的@Controller和@RequestMapping注解。
  3. Spring从@RequestMapping注解中构建URL值的映射表。
  4. 在运行时,当Spring收到请求时,它会在映射表中搜索URL。当它找到URL时,它会调用被标记为@RequestMapping的方法。
总结:
  • 注解本身并不执行任何操作。它们只是其他执行操作的类的标记。
请先阅读注解教程。然后使用反射扫描你的类(在启动期间),找到你的注解,并适当地处理它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接