我目前正在研究一个应用程序,其中域对象D的一个实例被注入到应用程序中。域对象可以包含许多不同的组合,并按其bean定义的不同组合和排列组合,从而导致许多不同的最终对象D,我称它们为不同的D版本。对于D的给定版本,我必须填满原始值并将其保存到数据库中。使用JPA和Hibernate将它保存到数据库非常简单。问题是填写D中的值。使用SNMP通过网络获取值,然后填满。对于D的每个版本,都有不同的策略可以遵循,因为D的每个版本都可能有不同的MIB。我目前正在遵循工厂模式。工厂采用D版本并返回一个特定于该D版本的valueRetriever,然后用于获取值并填充D.在Spring中使用依赖注入来替换工厂模式
另一个明显的方法是在D中注入配置检索器,然后用它来检索配置。但是我还需要在运行时使用检索器来重新获取配置,这样就有必要将检索器存储在数据库中,因此为每个检索器创建一个新表,这似乎是目前的开销。
我的问题是:有没有更好的方法来检索配置,即有一个valueRetriever给定了上述使用依赖注入的场景。
编辑:AOP可以在这里使用吗?
在定义bean的实例化过程中,这可能是好的,但在将其保存到数据库之后会发生什么?在存储之后,为了在运行时检索值,即在从数据库中加载D之后,将这个基于BeanFactory的Factory仍然能够提供检索器?如果这不是真的,那么我将不得不以某种方式找到一种方法来保持工厂或检索器与D.这将是非常类似于注入与D本身的检索器作为将使用的检索器,但将该检索器保存在那么DB是必要的。 – 2011-03-14 18:33:51