2

我希望能够为我的域类中的某些字段设置默认值。到目前为止,我有一个类为我的整个项目存储了一个设置映射,并考虑了将这个映射移动到 redis 数据库中的任务。这一天已经到来,我将所有数据移动到 redis 并创建了一个不错的 spring bean 来获取/设置值。但是......似乎在注入bean之前在域类实例上设置了默认值。这种破坏整个过程。另外......单元测试存在问题。我创建了一个实现与 spring bean 相同的接口并保存测试值的类。我想将它注入到域类中,但这也失败了。

所以现在我正试图找到一种好方法来处理我的域类的外部存储的默认值,并且能够运行单元测试。有什么想法吗?

4

2 回答 2

0

您可以采取几种不同的方法:

  • 使用默认值引入一个单独的 bean,以便以与以前相同的方式提供这些值。在单独的更高级别的上下文中或稍后在应用程序启动中,您可以使用从数据库中提取的 bean 定义来覆盖
  • 使用 BeanPostProcessor 或 BeanFactoryPostProcessor 指定默认值,然后使用新 bean 检索新值

如果这些答案都没有帮助,请发布您的设置和示例代码,以便我可以更清楚地了解您正在尝试做什么。

于 2011-11-25T17:48:11.507 回答
0

我最后做了什么:我创建了一个连接到 Redis 的类,并获得了我需要的所有数据。对于单元测试,我创建了这个类的一个副本,它实现了相同的接口,但它不是从 Redis 获取数据,而是在内部有一个简单的 Map 并从那里获取数据。最后它的行为相同,但数据存储在内部。所以在我的单元测试中,我只是在适当的地方注入这个类的单元测试版本。

可能不是最好的解决方案,但在过去的几个月里它对我有用。

于 2011-11-26T11:28:07.093 回答