当前位置: 首页 > 面试题库 >

Java Spring多个ApplicationContext

殳越
2023-03-14
问题内容

春天的定义ApplicationContext很模糊,我几乎完成了一整本教程,但仍然不明白它ApplicationContext代表什么。

根据Spring API,ApplicationContext是:

  • 中央接口,为应用程序提供配置。在应用程序运行时,它是只读的,但是如果实现支持,则可以重新加载。

  • 用于访问Spring bean容器的根接口。这是bean容器的基本客户端视图。

从上面,我的问题是:

1)我不断看到书中提到的“容器”,容器指的是什么?一个容器意味着一个Java进程吗?或一个容器引用一个ApplicationContext对象?

2)如果我实例化ApplicationContext一个Java应用程序中的两个(都在main正文中),那么这两个接口是否都指向一个中央容器?还是两个单独的实例?请参阅下面的代码,context1和之间有什么区别context2?如果中有一个Singleton Beans.xml,则由context1和调用context2,它们是两个单独的实例还是同一实例?

ApplicationContext context1 = new ClassPathXmlApplicationContext("Beans.xml");
ApplicationContext context2 = new ClassPathXmlApplicationContext("Beans.xml");

问题答案:

容器指的是控制容器的核心弹簧反转。容器提供了一种通过使用反射来初始化/引导应用程序(将配置加载到xml文件或注释中)以及管理Java对象(称为
bean托管对象) 的生命周期的方法。

在此初始阶段,您在应用程序中没有(通常是可以的)控制,而是在完成引导程序后(如果失败则什么也没有),您将获得应用程序的完全初始化状态。

它是对 EJB3容器
的替代或可能的补充。但是,如果没有遵循EJB定义的标准,就会出现问题。从历史上看,EJB的采用受到该规范的复杂性的限制,spring是一个新创建的项目,用于在J2SE
jvm上运行EJB3的可比功能,并且没有EJB容器,并且配置简单得多。

ApplicationContext(作为接口,并通过直接实现实现)是实现此IoC容器的手段,与相比BeanFactory,,后者现在(一种稀疏使用的)更直接的方式来管理Bean,该方式提供了基本实现ApplicationContext的功能。

关于第二个问题,您可以有多个ApplicationContexts实例,在这种情况下,它们将完全隔离,每个实例都有自己的配置。



 类似资料:
  • 问题内容: 我正在使用Spring JPA执行所有数据库操作。但是我不知道如何从Spring JPA的表中选择特定的列? 例如: 问题答案: 你可以从这样的类中在注释中进行设置: 请注意,你将不得不自己进行映射。像这样使用常规映射查找可能会更容易,除非你确实只需要这两个值: 也许也值得看一下Spring数据文档。

  • 我试图从OpenAPI v3 YAML文件生成Spring REST接口。构建说: 但是在输出目录中没有生成代码。 我遵循OpenAPI生成器gradle插件doc doc。 我的build.gradle: 我的api。yml: 应用程序编程接口。生成器正确收集yml(如果文件中存在任何语法错误,则生成失败)。 生成日志显示:),这看起来很可疑。这不意味着属性包含生成的结果吗? 渐变版本: 编辑:

  • 我正试图使用提供的MVC Spring项目模板从SpringToolSuite创建一个JAR或WAR文件。当我尝试导出(通过STS)或clean package(maven)代码时,JAR总是无法运行,因为找不到主清单属性。模板项目中也没有提供main()的类。该项目确实在我设置的关键tc服务器实例上的STS中运行。当我试图将项目导出为JAR时,问题就出现了。 这是我的项目的pom.xml:

  • 我有一个问题——我有一个带有websocket的java spring web应用程序,在本教程之后是sockjs实现https://spring.io/guides/gs/messaging-stomp-websocket/我需要用NodeJS连接到这个服务器应用程序。服务器应用程序是正常的,因为我设法通过web应用程序连接,它正在工作,但问题来了,当我试图实现它的nodejs。因此,要明确这一

  • 我相信下面的代码工作正常,但我的逻辑有缺陷,所以我正在寻求帮助以获得我真正想要的结果。此外,我认为我对JPA方法的尝试过于复杂,可能有更干净的解决方案。我知道我可能会使用@Query,但我想尝试让方法名解决方案也正常工作,这样我就可以了解我哪里出错了。 为了简单起见,我在本例中剥离了DB表,但是我有表1,它是顶级表,表2位于它下面,有一个外键返回到表1。 表1- 不幸的是,我相信通过下面的代码,它

  • 我有javaSpring启动应用程序。我想对经常读取的数据使用缓存。为此,我在我的jar中包含了以下依赖项 我还使用了@EnableCaching注释 使用@Cacheable注释和返回要缓存的数据的函数 但我仍然无法缓存数据。有什么我遗漏的吗?

  • 我尝试对一个包含restclient的服务进行一个简单的测试。看来我没有成功地模仿。看起来代码得到的是真实数据,而不是模拟数据。任何人都可以帮我。 服务本身将如下所示:

  • 我得到以下exeption连接到Mssql服务器。 我在属性中使用相同的配置连接到JDBC,但在尝试连接到R2DBC时出现问题。在Rest时发生,而不是在启动应用程序时发生。