3

在我的应用程序中,我想将我的一些数据存储在 ServletContext 中,因为它将在整个应用程序中使用。数据保存在数据库中。所有的配置都是通过整合struts2、spring、hibernate来完成的。问题是,我发现很难从数据库中获取数据。Spring 无法将 dao impl 类注入到实现 ServleltContextListener 的类中。谁能告诉我该怎么做?或者有其他选择吗?

4

2 回答 2

4

试试这个

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

public class MyListener implements ServletContextListener
{
    /**
     * @see javax.servlet.ServletContextListener#contextInitialized
     * (javax.servlet.ServletContextEvent) 
     */
    @Override
    public void contextInitialized(ServletContextEvent sce)
    {
        WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());
        Object yourDaoImplClass = applicationContext.getBean("your_bean_name_or_bean_id");
        //You can type cast yourDaoImplClass to your object
    }

    /**
     * @see javax.servlet.ServletContextListener#contextDestroyed
     * (javax.servlet.ServletContextEvent) 
     */    
    @Override
    public void contextDestroyed(ServletContextEvent sce)
    {

    }

}

希望这有效。让我知道事情的后续。

于 2012-07-02T11:58:53.497 回答
1

最好的方法是实现 Spring 的 ServletContextAware 接口,然后使用 @PostConstruct 或 afterPropertiesSet 方法将项目添加到 servlet 上下文。

于 2012-07-02T16:18:25.960 回答