获取spring 上下文的几种方法:
1. 通过配置文件获取:
ApplicationContext ac=new ClassPathXmlApplicationContext("spring-jpa-hibernate.xml"); SqlDao sQLDaoBean = (SqlDao)ac.getBean("sqlDaoBean");
2. 通过servletcontext获取:
例如在listener中获取:
public class DataDictionaryListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent arg0) { WebApplicationContext rwp = WebApplicationContextUtils.getRequiredWebApplicationContext(arg0.getServletContext()); SqlDao sqlDaoBean = (SqlDao)rwp.getBean("sqlDaoBean"); arg0.getServletContext().setAttribute("DataDictioary", sqlDaoBean.loadDataDictionary()); System.out.println("DataDictioary is loaded"); } @Override public void contextDestroyed(ServletContextEvent arg0) { } }
但是前提是web.xml中要先注入org.springframework.web.context.ContextLoaderListener
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <context-param> <!-- location of spring config --> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-jpa-hibernate.xml</param-value> </context-param> <!-- initialize spring context--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- load data dictionary --> <listener> <listener-class>com.myproject.example.common.listener.DataDictionaryListener</listener-class> </listener> </web-app>