春天注入类

时间:2012-09-06 20:51:42

标签: java spring

我是Spring的新手,我刚刚加入了一个开发团队,他们正在为我们正在开发的产品使用它。我开始了解IoC。但是,我对一个特定的观点感到困惑。我已经找到了答案,但一直找不到任何答案。

我正在查看的课程上设置了@Controller注释。其中一种方法具有@RequestMapping注释。此特定方法的方法签名包含我公司的一个专有类的参数。这个专有类在Spring上没有任何注释,也没有在Spring配置文件中列出。

所以,我的问题是:当没有任何东西可以帮助框架识别它时,该参数如何被注入?

我怀疑它能够做到这一点,因为在上一个事务中,专有类通过ModelAndView.addObject()添加到模型中,但我希望有人可以确认或否认。

具体情况如下:

  1. 用户请求登录页面
  2. addObject(proprietaryClass)
  3. 用户显示登录页面
  4. 用户点击按钮登录
  5. 方法在方法签名中使用专有类调用。
  6. 任何帮助都会很棒。

2 个答案:

答案 0 :(得分:1)

在bean配置中的某个位置,您将找到转换服务bean。如果其他开发人员很好,他们会将其命名为“ConverterFactory”,它可能会扩展org.springframework.format.support.FormattingConversionServiceFactoryBean。您还可以查看org.springframework.format.FormatterRegistry的代码库。

Spring Reference Manual中描述了这一点。

答案 1 :(得分:1)

春天很聪明......真聪明。它可以查看请求参数的名称,并按字段名称将它们映射到POJO。例如,如果您的用户有“第一个”和“最后一个”字段,您可以传入user.first = Joe& user.last = Blow,它会尝试设置用户的“第一个”和“最后一个”属性宾语。请特别注意http://www.jpalace.org/docs/technotes/spring/mvc-params.html名为Binding Domain Objects的部分。

另一个选择是他们已经实施了转换器或转换器工厂。在我的项目中,我实现了一个处理我的任何数据库实体的通用ConverterFactory,使用Long并通过id查找它将其转换为实体化实体。