今天,给项目组服务器搭建新的项目,在服务器中配置spring,但是启动的时候spring中的bean并没有加载进来。
1.首先看了一下,bean类名有没有写错,鼠标单击类能进到类里,排除类名的错误。
2.然后,看web.xml中的配置是不是没有添加spring配置,果然,在web.xml里没有下边的监听器配置。(为什么要配置,本人只知道它用于监听spring初始化时加载一些类,如果想知道可以看一下ContextLoaderListener源码,后续我自己也会看看)
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
3.配置完listenner,启动还是没有加载,网上搜索,说spring如果没有配置在默认的applicationContext.xml里边的话,需要在web.xml里边添加,查看了一下,自己的web.xml,配置了相关内容,可笑的是没有配置成应用级别而是配置到了servlet里边,配置如下边。
<servlet> <servlet-name>controller</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>controller</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
4.然后我改成了下边的配置
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-servlet.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--<servlet>--> <!--<servlet-name>controller</servlet-name>--> <!--<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>--> <!--<init-param>--> <!--<param-name>contextConfigLocation</param-name>--> <!--<param-value>classpath:spring-servlet.xml</param-value>--> <!--</init-param>--> <!--<load-on-startup>1</load-on-startup>--> <!--</servlet>--> <!--<servlet-mapping>--> <!--<servlet-name>controller</servlet-name>--> <!--<url-pattern>/*</url-pattern>--> <!--</servlet-mapping>--> </web-app>
5.重新启动tomcat还是不可以,这是自己让自己冷静一下,重新捋一遍,皇天不负有心人,在项目里边配置文件都是有的,但是编译之后的文件夹classes里边空空如也,知道这可能是最后的问题了,利用maven(我用的是intelij IDE),clean一下,又package一下,classes里边有文件了,重新启动tomcat可以了(?)。
6.为了避免执行的不是最新代码,tomcat配置如下:
注意,deployment选项添加的war选项,要带exploded,具体细节介绍,看一下这位朋友的这篇博客。