zoukankan      html  css  js  c++  java
  • 【问题记录】eclipse启动web项目时,spring会初始化两次

    背景:一个tomcat,一个eclipse,一个SSM框架的web项目。在eclipse中新建tomcat服务器,默认配置,然后在服务器配置中将Server Locations改成Use Tomcat installation并且将Deploy path换成tomcat安装目录下的webapps
    这里写图片描述

    现象: 将web项目部署到背景中的tomcat服务器中,运行项目。然后在eclipse的控制台中就会发现spring配置被执行了两次。如果想看到明显的现象,可以在项目中添加一个自启动的bean,并在自启动方法中向控制台打印信息。那么你将看到这些信息被打印了两次。也就是说,spring的bean被初始化两次。

    解决方法:
    方式一:将服务器配置中Deploy path路径webapps换一个名称,比如wtpwebapps
    方式二:勾选Server Options中的Publish module contexts to separate XML files
    这里写图片描述

    原因: web项目启动时,由于

    <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">

    中的appBase中的值为webapps,tomcat加载到这里的时候,会去webapps文件夹下查找项目,并启动找到的项目,然后tomcat发现了webapps下刚好有一个部署的项目(Deploy path设置什么目录,项目就会部署到什么目录),所以这是第一次启动。接着,tomcat继续加载配置,然后就找到了

    <Context docBase="projectName" path="projectPath" reloadable="true" source="org.eclipse.jst.jee.server:ssm-config"/>

    于是,tomcat根据这个配置又加载了一次项目,这是第二次加载项目,所以在控制台可以看到两次初始化spring。

  • 相关阅读:
    log4j2分析总结(一)
    Idea(三)常用插件以及快捷键总结
    设计模式(七)_模板方法模式
    Idea(二) 解决IDEA卡顿问题及相关基本配置
    设计模式(六)_观察者模式
    SpringBoot(十一)_springboot热部署
    UML类图学习
    设计模式(五)_工厂方法模式
    设计模式(四)_简单工厂模式
    设计模式(三)_装饰器模式
  • 原文地址:https://www.cnblogs.com/zeling/p/8494834.html
Copyright © 2011-2022 走看看