1

我有一个参考文件的 roo 实体:

@RooJavaBean
@RooToString
@RooJpaActiveRecord
public class ActivatedConfiguration {

  @NotNull
  @OneToOne
  @JoinColumn(unique = true, nullable = false)
  private Configuration configuration;

  ...
}

在 Spring 控制器中,我使用该实体作为参数注释了 mathod:

@RequestMapping(value = "/")
public String startActivation(ActivatedConfiguration activatedConfiguration){
...
}

当我准备 HTML GET 请求时:

http://localhost:8080/app?configuration=1&[...]

spring 自动注入了该字段。

问题是:魔法从何而来?如何在我的 junit 测试中模拟数据库获取?

4

1 回答 1

0

这是由在 Spring MVC 中注册的Converter处理的——如果你查看你的 web 文件夹,你应该看到一个 ApplicationConversionServiceFactoryBean_Roo_ConversionService.aj 类,其中包含适用于你的应用程序的所有不同转换器——应该有一个接收字符串并将其转换为您的Configuration类,本质上所做的是将 id 作为字符串,将其转换为 long,然后在存储库中查找Configuration具有该 id 的实体,这就是 Spring MVC 绑定参数的方式。

于 2012-09-12T12:10:55.593 回答