如何在域类中处理外部存储的默认值

时间:2011-07-19 22:36:28

标签: spring grails groovy default-value grails-domain-class

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

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

2 个答案:

答案 0 :(得分:0)

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

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

如果这些答案都没有帮助,请发布您的设置和示例代码,以便更清楚地了解您要做的事情。

答案 1 :(得分:0)

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

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