????在bean文件中新增了配置,運(yùn)行后發(fā)現(xiàn)配置并沒(méi)有生效,bean中并沒(méi)有幫忙創(chuàng)建對(duì)象。找了半天原因,最后全局搜索了一下,發(fā)現(xiàn)有2處地方有配置的bean文件。
????試著 將第二張圖片的classes文件給刪了,再次啟動(dòng),自己新增的配置生效了。由此可以推定,我先前啟動(dòng)的時(shí)候,一直讀取的是dist/backStageManager/WEB-INF/classes/beans/application.xml,而自己修改的那個(gè)application.xml文件并沒(méi)有生效。
????加載xml文件是在web.xml中配置的,點(diǎn)進(jìn)去看了下,它的配置是
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:beans/*.xml</param-value>
</context-param>
????發(fā)現(xiàn)它是classpath*,于是百度了一下classpath和classpath*的區(qū)別
classpath和classpath*區(qū)別:
classpath:只會(huì)到你的class路徑中查找找文件。
classpath*:不僅包含class路徑,還包括jar文件中(class路徑)進(jìn)行查找。
注意: 用classpath*:需要遍歷所有的classpath,所以加載速度是很慢的;因此,在規(guī)劃的時(shí)候,應(yīng)該盡可能規(guī)劃好資源文件所在的路徑,盡量避免使用classpath*。
原因:之前我在class路徑下配置的application.xml被覆蓋了。
總結(jié):classpath*讀取的范圍會(huì)比classpath廣,它會(huì)同時(shí)加載多個(gè)classpath路徑下的文件。所以在class路徑下配置完的xml可能會(huì)被其它路徑下的文件覆蓋。