3

我是使用 Spring 的新手,我刚刚加入了一个开发团队,该团队正在将它用于我们正在开发的产品。我开始了解 IoC。但是,我在一个特定点上感到困惑。我一直在寻找答案,但找不到任何东西。

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

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

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

具体情况是这样的:

  1. 用户请求登录页面
  2. addObject(proprietaryClass)
  3. 显示登录页面的用户
  4. 用户点击按钮登录
  5. 使用方法签名中的专有类调用方法。

任何帮助都会很棒。

4

2 回答 2

1

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

这在Spring 参考手册中有描述。

于 2012-09-06T21:09:48.510 回答
1

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

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

于 2012-09-06T21:11:32.380 回答