spring bean不加载问题??

sunbs_520 发布于 2013/10/09 22:48
阅读 1K+
收藏 1

各位大侠好:最近我搭了一个spring+struts+ibaits的框架,里面用到quartz,用于处理定时任务;但是项目启动的时候,不能加载对应的bean,就是applicationContext*.xml文件;项目启动的时候总是报空指针,我在想是不是项目没有加载applicationContext*.xml;求各位大侠帮忙看看;
;这是我的web.xml配置;

<!-- 配置Struts2 -->
 <filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 
 <!-- 配置Spring -->
 <context-param>  
        <param-name>contextConfigLocation</param-name>  
        <param-value>  
            WEB-INF/classes/applicationContext*.xml
        </param-value>  
    </context-param>
    <listener>  
        <listener-class>  
            org.springframework.web.context.ContextLoaderListener  
        </listener-class>  
    </listener>  
   
   
   <!-- 配置quartz -->
 <servlet>
 <servlet-name>QuartzInitializer</servlet-name>
 <servlet-class>com.asiainfo.web.QuartzInitializerServlet</servlet-class>
 <init-param>
 <param-name>config-file</param-name>
 <param-value>quartz.properties</param-value>
 </init-param>
 <init-param>
 <param-name>shutdown-on-unload</param-name>
 <param-value>true</param-value>
 </init-param>
 <load-on-startup>10</load-on-startup>
 </servlet>

 

 applicationContext*.xml

 <bean id="iSchedulerService" class="com.asiainfo.service.impl.SchedulerServiceImpl">
  <property name="quartzTaskConfigDao" ref="quartzTaskConfigDao"/>
 </bean>

 

java代码我也set,get对应的quartzTaskConfigDao,但是获取该dao时候报空指针;

这是什么问题了??

加载中
0
皛尛惢
皛尛惢
如是未加载application.xml,可在web前试加“/” 或使用”classpath:“
sunbs_520
sunbs_520
按照你说的,我试了下;发现不是这个问题;我查了文档,web.xml里面加载的顺序;spring bean是在servlet之前被加载的;第一次是初始化了,等到执行到servlet的时候,dao就为null了;很郁闷!!不过我用了spring+quartz,就不会出现这个问题了;还是很谢谢你们;
0
淘淘我的小宝宝
淘淘我的小宝宝

引用classpath
<context-param>   
        <param-name>contextConfigLocation</param-name>   
        <param-value>   
           classpath:applicationContext*.xml 
        </param-value>   
</context-param> 

或者引用绝对路径记得带/,你那个是相对路径了
<context-param>   
        <param-name>contextConfigLocation</param-name>   
        <param-value>   
            /WEB-INF/classes/applicationContext*.xml 
        </param-value>   
</context-param>

sunbs_520
sunbs_520
我调试了下项目,在项目第一次启动的时候,是初始化了spring bean;但加载servlet的时候,servlet里面有对应的dao,没有初始化;是spring bean晚加载吗?我现在不用这个quartz,用的是spring自带的quartz,这样就不会出现这个问题了,不过还是很谢谢你们!!
0
java_小白
java_小白

引用来自“潇湘往事”的答案

引用classpath
<context-param>   
        <param-name>contextConfigLocation</param-name>   
        <param-value>   
           classpath:applicationContext*.xml 
        </param-value>   
</context-param> 

或者引用绝对路径记得带/,你那个是相对路径了
<context-param>   
        <param-name>contextConfigLocation</param-name>   
        <param-value>   
            /WEB-INF/classes/applicationContext*.xml 
        </param-value>   
</context-param>

这个是正解
返回顶部
顶部