我们的应用程序需要支持多租户。每个已注册的客户都可能会覆盖 1 个或多个 bean 或在核心平台级别(通用代码/定义)定义的 bean 的某些属性。我想知道处理这个问题的最佳方法是什么。
问问题
27973 次
1 回答
33
Spring 允许您多次重新定义同一个 bean 名称,并将为给定名称处理的最后一个 bean 定义作为获胜者。例如,您可以有一个定义核心 bean 的 XML 文件,然后将其导入到特定于客户端的 XML 文件中,该文件也重新定义了其中的一些 bean。不过,它有点脆弱,因为没有专门说“这个 bean 定义是覆盖”的机制。
我发现处理这个问题的最简洁方法是使用 Spring 3 中引入的新@Bean
-syntax。不是将 bean 定义为 XML,而是在 Java 中定义它们。因此,您的核心 bean 将在一个@Bean
带注释的类中定义,并且您的客户端配置将对其进行子类化,并覆盖适当的 bean。这允许您使用标准的 java@Override
注释,明确指示给定的 bean 定义正在被覆盖。
于 2010-11-22T20:46:04.873 回答