【问题标题】:Bean and Dependency Injection configuration from Database Instead XML来自数据库而不是 XML 的 Bean 和依赖注入配置
【发布时间】:2023-06-10 20:03:01
【问题描述】:

目前我们在 Application-Context.xml 文件中定义了所有服务类配置。应用程序上下文将在应用程序启动期间使用上下文文件中定义的所有 bean 进行初始化,并由 spring 处理依赖注入。

我正在寻找一种解决方案,它必须在运行时根据数据库中的特定参数加载特定的服务类。

例如,代码库中存在 FooService1.java 和 FooService2.java 两个类。每个类都将依赖于适当的 DAO 类,例如 FooDAO1.java 和 FooDAO2.java。

而不是在 applciation-context.xml 文件中定义这些,运行时参数将决定需要加载哪个服务以及需要注入其对应的 DAO。基本上我在这里想要实现的是面向 DB 的依赖注入,以将所有应用程序上下文信息保存在数据库中而不是 XML 中。

表看起来像:SERVICE_BEANS、DAO_BEANS 和一些具有依赖信息的中间表。

我刚刚在春天看到了 JdbcBeanDefinitionReader 类。我可以用它来实现面向 DB 的 DI 吗?我没有看到太多这方面的例子。如果有人有任何例子,请告诉我。

【问题讨论】:

  • 您可以自定义实现BeanFactory,这将从数据库中获取bean定义。
  • 谢谢肯!您知道任何可参考的示例应用程序吗?有没有实现自定义 bean 工厂的开源应用程序/框架?
  • 不幸的是,没有。我还没有看到准备好使用的实现。

标签: java xml spring spring-mvc dependency-injection


【解决方案1】:

我认为您可以在运行时生成 bean 并将它们注册到 spring-context。

参考Registering beans(prototype) at runtime in Spring

希望有帮助!

【讨论】: