假设已实例化Spring控制器参数,但何时何地实例化了它?

时间:2019-06-26 00:08:48

标签: java spring

Thymeleaf tutorial code

该SeedStarter如何实例化? 看到方法主体显示了与对象SeedStarter的交互。.那么如何首先实例化它?

由于该项目是教程,所以我将摘录我一直在寻找答案的确切位置。除了以下情况外,我目前不知道可以通过其他任何方式来初始化该“ guest”对象: 1.它是先前创建并添加到模型中的。 (在控制器中没有初始化,然后可能未将其添加到其他模型中) 2.已经创建的控制器的私有成员。

Environments base (root)

控制器:

pip list

1 个答案:

答案 0 :(得分:0)

在Spring MVC成功匹配控制器方法之后,并且在它实际调用它之前,它将基于参数类型及其注释解析方法参数。您可以从此table中找到所有受支持的类型,注释和解析规则。

在您的情况下,由于SeedStarter上没有任何注释,并且其类型也不是受支持的类型,因此它将退回到默认值,就像在其上注释了@ModelAttribute一样。 (由该表中的最后一条规则提及)。从@ModelAttribute docs开始,它将实例化SeedStarter,如下所示:

  
      
  • 从模型中获取(如果已通过使用Model添加)。
  •   
  • 使用@SessionAttributes从HTTP会话中进行。
  •   
  • 从URI路径变量通过   转换器(请参见下一个示例)。
  •   
  • 从默认调用   构造函数。
  •   
  • 通过调用“主要构造函数”   与Servlet请求参数匹配的参数。参数名称是   通过JavaBeans @ConstructorProperties或通过   字节码中运行时保留的参数名称。
  •