ssh开发的一个项目,由于特殊情况,需要在service层直接调用dao.而不是从页面->action->service->dao .
所以使用了ApplicationContext这个对象去得到dao,问题是使用他这个对象加载每次都要去加载配置文件,再去getBean("xxDao"),能不能像从页面调用action再调用service调用dao那样,只在项目启动的时候加载一次,后面要调用直接查询的sql就好了,而不需要再去加载配置文件了。
目前我想的办法就是把这个对象写成静态的,但是这样会一直占用堆栈空间,对程序影响不好。
哪位有什么好的方式或建议请指点指点。

解决方案 »

  1.   

    可以啊?你没有整合过SSH吗?
    在web.xml里面加上这段话
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
       <!-- 你所有的spring配置文件的路径.如:-->
                        classpath*:spring-config/applicationContext-*.xml;
    </param-value>
    </context-param>
    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>项目一启动.他就自动加载了把所有的bean交给spring管理吧。不要用getBean()了。你累不
      

  2.   

    如果不加默认的是加载applicationContext.xml
      

  3.   

    你因该是说自己要拿到集成后的 spring application对象吧,有一个webapplicationutil好像可以拿到
      

  4.   

    是你没听明白我的意思? 还是我表达的不够清楚!!!
    普通情况当然直接在action层注入,一直注入到dao层.现在的问题是不通过action层注入,在service层直接去拿dao对象,比如说写个test类测试,又或者webservice调用,不用getBean()? 难道有更高的招?
      

  5.   

    这个我就更不明白了...你配置好注入文件以后,在service层,还是一样可以直接获取dao对象啊..他一样会注入进去啊.. 谁说只有在action通过注入方式拿到service再才能拿到dao?
    我觉得你对IOC还是没有理解..
      

  6.   

    配置过:
    <filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    </filter-class>
    </filter> <filter-mapping>
    <filter-name>hibernateFilter</filter-name>
    <url-pattern>*.do</url-pattern>
    </filter-mapping> <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
    </context-param> <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>java类里:
    XDAO xDao;
    setXDao..方法里直接用xDao.save...时候,xDao根本没注入进来.貌似你使用过这方式 ?