spring - 在子上下文中覆盖父上下文中定义的 bean

标签 spring architecture jakarta-ee multi-tenant

我们的应用需要支持 Multi-Tenancy 。每个已注册的客户都可能会覆盖 1 个或多个 bean 或在核心平台级别(通用代码/定义)定义的 bean 的某些属性。我想知道处理这个问题的最佳方法是什么。

最佳答案

Spring 允许您多次重新定义同一个 bean 名称,并将为给定名称处理的最后一个 bean 定义作为获胜者。例如,您可以有一个定义核心 bean 的 XML 文件,然后将其导入到特定于客户端的 XML 文件中,该文件也重新定义了其中的一些 bean。不过,它有点脆弱,因为没有专门说“这个 bean 定义是一个覆盖”的机制。

我发现最简洁的处理方法是使用 new @Bean-syntax introduced in Spring 3 .不是将 bean 定义为 XML,而是在 Java 中定义它们。因此,您的核心 bean 将在一个 @Bean 注释类中定义,并且您的客户端配置将继承该类,并覆盖适当的 bean。这允许您使用标准的 java @Override 注释,明确指示给定的 bean 定义正在被覆盖。

关于spring - 在子上下文中覆盖父上下文中定义的 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4249978/

相关文章:

Spring + Thymeleaf - 如何实现列表的分页

java - 将 Spring-wired 库与 robotsframework 结合使用

java - 正则表达式 - 不应允许连续出现空格

WPF/Silverlight 企业应用程序架构.. 你是做什么的?

java - 实体 bean (ejb 3.x) 是否需要容器?

java - 如何找到更大的共享目录文件夹并通过电子邮件发送

java - http请求对电池生命周期的影响

spring - 在应用程序启动时将实例注册为 'singleton' bean

database-design - 具有循环特征的议程应用数据库模型

deployment - 将 elasticsearch 服务直接暴露给客户端或将其放在中间件后面