Spring 上下文层次结构

2023-12-19

我将使用一个父上下文创建多个 Spring 上下文。 以下是我将如何创建父上下文:

new ClassPathXmlApplicationContext(new String[] {"ApplicationContext/application.xml"})

我想通过以下方式创建每个父上下文:

PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer();
configurer.setProperties(properties);
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(appContext);
context.addBeanFactoryPostProcessor(configurer);
context.setConfigLocation("ApplicationContext/beans.xml");
context.refresh();

这个想法是拥有多个子上下文,每个子上下文都具有相同的 bean 层次结构(DAO、服务、数据源、事务管理器等)。拥有多个上下文的原因是需要拥有多个不同的数据源(实际上每个应用程序上下文一个)。每个数据源的数据库结构都是相同的。 所以,有一些问题。

  1. 拥有这样的上下文层次结构安全吗?例如,如果有 30 个子上下文?
  2. 跨子上下文 bean 可见性怎么样?说吧,我有客户服务声明的bean@成分具有多个自动装配 DAO 依赖项的注释。 Spring 是否在特定的子上下文中执行自动装配和其他 DI 操作?
  3. 另外,我将使用以下方法从子上下文中查找 bean:childContext.getBean(CustomerService.class);我是否从该特定子上下文而不是其他子上下文中获得客户服务?我知道,spring 单例是每个应用程序上下文的单例,但仍不确定。

附言。 还有另一种处理所描述的多个数据源的方法here http://blog.springsource.org/2007/01/23/dynamic-datasource-routing/。但这种方法对于我来说似乎不太方便。


  • 拥有这样的上下文层次结构安全吗?例如,如果有 30 个子上下文?

你所说的安全是什么意思?如果您的意思是 bean 初始化时的线程安全,那么是的,因为上下文是一一初始化的。

  • 跨子上下文 bean 可见性怎么样?说吧,我有客户服务声明的bean@成分具有多个自动装配 DAO 依赖项的注释。 Spring 是否在特定的子上下文中执行自动装配和其他 DI 操作?

Bean 在子上下文中不可见。上下文中唯一可见的 bean 是它自己的 bean 及其父上下文中的 bean。

  • 另外,我将使用以下方法从子上下文中查找 bean:childContext.getBean(CustomerService.class);我是否从该特定子上下文而不是其他子上下文中获得客户服务?我知道,spring 单例是每个应用程序上下文的单例,但仍不确定。

是的。根据最后一个问题的答案。

我在我的应用程序中广泛使用这种模式。许多其他子上下文通过将其作为父上下文来共享公共上下文。当您想要在单个 JVM 中运行完全隔离的上下文时(例如,如果您的应用程序是多租户应用程序),它非常有用。然后,您可以按租户方式启动/停止/重新启动应用程序上下文,而无需重新启动 JVM。

这还允许数据源和事务管理器的明确分离,并允许人们轻松地对数据库进行分片。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring 上下文层次结构 的相关文章

随机推荐

  • 以编程方式加密 .NET 中的配置文件

    有人可以概述一下如何在 NET 中 最好是用 C 以编程方式加密配置文件 我想做的是对应用程序的启动进行某种检查 看看某个部分是否不受保护 如果是 则对其进行加密 这适用于设置和连接字符串 另外 如果有人可以列出加密提供商的类型以及它们之间
  • 在 Ruby on Rails 中的控制器之间重用代码的最佳实践

    我想分享一些控制器方法 在 ruby on Rails 中执行此操作的最佳实践是什么 我应该创建一个控制器扩展的抽象类 还是应该创建模块并将其添加到每个控制器中 下面是我想分享的控制器方法 def driving directions ad
  • Android 10 L2CAP 连接 IOException 超时 Wii 平衡板

    背景 很久以前 我的任务是为 Wii Balance Board 制作一个 Android 应用程序 经过一番折腾后 我发现 Android 不再支持 L2CAP 更多的research https stackoverflow com qu
  • 如何拒绝删除前触发器中的删除语句?

    如何拒绝delete中的声明删除触发器之前 mysql 示例用例 我有一条指定的记录id我想要的不会被删除 您可以创建一个使用引用 ID 列的外键约束的表 前提是该列是表的主键 在引用 ID 0 的 子 表中插入一行 并从该表中删除用户的所
  • 如何迭代 PCB 以显示 Linux 内核模块中的信息?

    我想编写一个 Linux 内核模块 它可以显示所有正在运行的进程的 PID 我有以下代码 procInfo c My Kernel Module for process info include
  • 如何锁定过时的团队项目

    As part of a maintenance I was about to Lock several now obsolete TeamProjects by right clicking on each one s root in S
  • 如何在 LLVM IR 中检查指令是否为 PHI 指令

    我正在写一个 LLVM pass 对于指令 llvm Instruction Class 如何检查指令是否是PHI指令 我找到了解决方案 您可以像这样检查 PHI 节点 isa
  • 自定义视图 (xib) 在情节提要上不可见

    我有一个自定义视图xib我有多个TableViews 我正在将其加载到ViewController作为嵌套视图 ViewController View View This is where I load my Custom View 当我运
  • JavaScript 中的位移位

    我有一个非常大的数字 5799218898 并且想将其右移到 13 位 所以 windows calculator 或 python 给了我 5799218898 gt gt 13 10001010010000111001111110000
  • 如何在变基期间对所有提交运行测试

    我有一个包含大量提交的功能分支 A B C master B C D Z feature 我正在研究feature但另一个开发人员已经创建了提交B and C 现在我想变基feature提交时C 但我和 或自动合并在变基期间引入了错误 我的
  • 如何在 swift 3 中检测文本视图开始编辑和结束编辑

    我在 Objective C 中找到了相关的问题和答案 但我无法快速找到正确的方法 有没有方法可以检测与快速归档的文本相同的文本视图 我想解决通过键盘隐藏文本视图的问题 为此 我需要一种方法来检测开始和结束编辑文本视图 任何帮助 将不胜感激
  • 从 Android 中的 onCreate 获取意图

    我使用 Intent 和一些额外的内容从我的小部件启动一个 Activity 无论如何 我只能在 Activity 处于后台时获取 Intent 创建 Activity 时如何获取 Intent 尝试使用 this getIntent 但额
  • 在 symfony 中扩展 sfDoctrineRecord

    我已经向 symfony 项目中的一些实例类添加了一些功能 我希望所有实例类都具有这些功能 如果我对编辑核心 symfony 安装没有任何疑虑 我会直接将我的方法添加到sfDoctrineRecord班级 但我当然不想这样做 因为我的更改会
  • 如何在C中修改共享内存(shmget/shmat)?

    我有一个结构 struct sdata int x int y time t time 我为该结构创建共享内存 如下所示 size t shmsize sizeof struct sdata shmid shmget IPC PRIVATE
  • 警报对话框未显示

    我是安卓开发新手 尝试在我的项目中实现 android 对话框 但它没有显示 logcat 中没有错误 这是它的 XML 代码
  • 电子邮件验证的正则表达式规则在 vuejs 中不起作用

    我尝试了这段代码 如https v2 vuejs org v2 cookbook form validation html https v2 vuejs org v2 cookbook form validation html validE
  • 测试 Eclipse 插件时的 AGENT_ERROR_INVALID_EVENT_TYPE

    我正在开发一个 eclipse 插件 我在测试的时候有时会遇到如下错误 JDWP exit error AGENT ERROR INVALID EVENT TYPE 204 ExceptionOccurred src share back
  • 使用正则表达式过滤差异

    似乎能够过滤差异以便不显示细微的更改将非常方便 我想编写一个将在该行上运行的正则表达式 然后向其传递另一个字符串 该字符串使用捕获的参数生成规范形式 如果之前和之后的行产生相同的输出 那么它们将从差异中删除 例如 我正在开发一个 PHP 代
  • 网络同步:优点和缺点?

    您的合作经历如何Websync http www frozenmountain com 彗星框架 在使用它之前您是否考虑过任何替代方案 到目前为止我可以这么说 Pros 非常简单易用 不需要任何服务器配置 Cons 昂贵 事实证明为我们节省
  • Spring 上下文层次结构

    我将使用一个父上下文创建多个 Spring 上下文 以下是我将如何创建父上下文 new ClassPathXmlApplicationContext new String ApplicationContext application xml