java - Spring中使用依赖注入(inject)替代工厂模式

标签 java hibernate spring dependency-injection factory-pattern

我目前正在开发一个应用程序,其中将域对象 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/

相关文章:

java - 没有其他方法可以在 Hibernate 中保存实体吗?

java - Grails 2.0.4 打开 zip 文件时出错或缺少 Springloaded 的 JAR list

java - 事件仅由一个 bean 接收? (尽管有好几个)

java - JSP 中的文档编辑器

java - 如何将 TXT 文件加载到 JList 中?

java - 如何使用 Spring Data JPA 删除子记录

spring - 如何在 spring 应用程序属性中获取正在运行的 tomcat 端口

java - 在包含代码的 jar 文件旁边生成一个文件

java - 从java中的任意字符获取VK int

java - 在 Hibernate 5.1 中使用 java.time