【問題記錄】eclipse啓動web項目時,spring會初始化兩次

背景:一個tomcat,一個eclipse,一個SSM框架的web項目。在eclipse中新建tomcat服務器,默認配置,而後在服務器配置中將Server Locations改爲Use Tomcat installation而且將Deploy path換成tomcat安裝目錄下的webapps
clipboard.pngweb

現象: 將web項目部署到背景中的tomcat服務器中,運行項目。而後在eclipse的控制檯中就會發現spring配置被執行了兩次。若是想看到明顯的現象,能夠在項目中添加一個自啓動的bean,並在自啓動方法中向控制檯打印信息。那麼你將看到這些信息被打印了兩次。也就是說,spring的bean被初始化兩次。spring

解決方法:
方式一:將服務器配置中Deploy path路徑webapps換一個名稱,好比wtpwebapps
方式二:勾選Server Options中的Publish module contexts to separate XML filestomcat

clipboard.png

緣由: web項目啓動時,因爲服務器

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

中的appBase中的值爲webapps,tomcat加載到這裏的時候,會去webapps文件夾下查找項目,並啓動找到的項目,而後tomcat發現了webapps下恰好有一個部署的項目(Deploy path設置什麼目錄,項目就會部署到什麼目錄),因此這是第一次啓動。接着,tomcat繼續加載配置,而後就找到了app

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

因而,tomcat根據這個配置又加載了一次項目,這是第二次加載項目,因此在控制檯能夠看到兩次初始化spring。框架

相關文章
相關標籤/搜索