日期:2014-05-19  浏览次数:20681 次

Spring——Bean的加载顺序和Tomcat有关?或者和系统有关?
有一个Java的SSH项目,在win系统上可以正常运行,但到了Ubuntu上就不行。

查看了Tomcat的启动信息,说是bean找不到。实际上bean是有的,只是顺序有先后。

类似这样的:

Java code

<bean id="customerLogic">
     <property name="dao" ref="customerDao"/>
</bean>

<bean id="customerDao">
</bean>




就是前面的bean(customerLogic)引用了后面定义的bean(customerDao)。在Ubuntu上查看Tomcat的日志,提示customerDao这个bean找不到。

bean的加载顺序和定义的先后顺序有关?或者和Tomcat有关?抑或者和系统(win/Ununtu)有关?

WinXp Tomcat-5.5.20
Ubuntu 11 Tomcat-5.5.33

------解决方案--------------------
Bean 的加载就是 定位 -》 载入 -》 注册的基本过程。载入过程中第一步是xml的载入,,第2步才是bean的解析,放到beanDefinition的数据结构中。所以定义顺序跟加载顺序没有必然联系。
------解决方案--------------------
可以试一下,配置多个applicationContext-*.xml 

------解决方案--------------------
和你在web.xml中的配置有关系的吧
------解决方案--------------------
bean的class属性值写的对么 
注意空格之类的 细心点
------解决方案--------------------
你分开几个xml文件 几个最先需要初始化的放在同一个xml里面 就可以了
------解决方案--------------------
spring确实存在加载顺序的问题,但是我感觉只要spring的filter配置正确的顺序的,基本上都没问题。由于没有碰到过类似的情况。只提供一个建议:看一下web-xml中spring的filter的顺序。