【问题标题】:Spring bean initialization in a web appWeb 应用程序中的 Spring bean 初始化
【发布时间】:2010-05-07 11:26:06
【问题描述】:

我们在 init 方法中使用 WebApplicationContextUtils 处理 Web 应用程序和自动装配 bean。

您能否澄清一些有关 bean 初始化的细节?

问题源于静态工厂方法。

假设有一个在静态工厂方法中创建的 bean。

正如我们所见,当 web 应用程序被部署时,ContextLoaderListener 会初始化所有存在的 bean

在 Spring xml 配置文件中。

现在发生这样的事情。在静态工厂方法中,我们运行一个开始计时的计时器。

但实际上我们不希望它开始滴答作响,除非 bean 被注入到对象的属性中!

这是第一个问题 - 所有的 bean 在部署时都会自动初始化 - 对吗?

之后,当我们需要注入时,它只是感觉与初始化期间创建的对象的地址的链接,尽管 OBJECT WAS CREATED ON WEB APP DEPLOY,立即! (我假设默认的单例创建 Spring 行为)

第二个问题:一个 Web 应用程序的所有副本是否都使用相同的 bean,所以所有 bean 都是 WEB-APP 范围的,每个 Spring bean 都在该 Web 应用程序运行的所有副本之间共享?

【问题讨论】:

    标签: java spring


    【解决方案1】:

    这是第一个问题 - 所有 bean 在部署时都会自动初始化 - 正确吗?

    除非您启用某种延迟加载,否则可以。

    第二个问题:一个网络应用程序的所有副本是否都使用相同的 bean,所以所有 bean 都是 WEB-APP 范围的,每个 Spring bean 都在该网络应用程序运行的所有副本之间共享?

    我认为这里对于“webapp 的副本”的含义有些混淆。您的意思是您将相同的 Web 应用程序(代码和文件)部署到多个上下文路径下的应用服务器吗?即,将您的webapp 项目部署为webappCopy1webappCopy2webappCopy3 等?如果是这样,那么每个应用程序都是隔离的并创建它自己的单独的 bean 工厂。

    【讨论】:

    • 不,我的意思是只有一个 web 应用程序和在这个 ONE web 应用程序上运行的不同会话,假设称之为 localhost/UniqueWebApp
    猜你喜欢
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 2017-01-31
    • 2015-03-06
    相关资源
    最近更新 更多