我目前正在开发一个应用程序,其中将域对象 D 的实例注入(inject)到该应用程序中。域对象可以按照其 bean 定义的不同组合和排列包含许多类,从而导致许多不同的最终对象 D,我将其称为 D 的不同版本。对于给定版本的 D,我必须填写其中的原始值,然后将其保存到数据库中。使用 JPA 和 Hibernate 将其保存到数据库非常简单。问题在于填充 D 中的值。这些值是使用 SNMP 通过网络获取的,然后填充。对于 D 的每个版本,需要遵循不同的策略,因为 D 的每个版本可能具有不同的 MIB。我目前正在遵循工厂模式。工厂获取 D 的一个版本并返回特定于该 D 版本的 valueRetriever,然后使用该 valueRetriever 获取值并填充 D。
另一种明显的方法是使用 D 注入(inject)配置检索器,然后使用它来检索配置。但我还需要在运行时使用检索器来重新获取配置,因此有必要将检索器也存储在数据库中,从而为每个检索器创建一个新表,这目前看来是一种开销。
我的问题是:是否有更好的方法来检索配置,即在上述场景中使用依赖注入(inject)有一个 valueRetriever。
编辑:AOP在这里有用吗?
最佳答案
看来您需要创建的某些对象具有复杂的创建逻辑。您可能不习惯查看 Spring FactoryBean 接口(interface),因为 FactoryBean 可以通过网络获取所有复杂的详细信息,同时允许您创建实例并将其注入(inject)到其他 bean 中。
关于java - Spring中使用依赖注入(inject)替代工厂模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5302403/