获取spring 上下文的几种方法

获取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>

猜你喜欢

转载自oracle-api.iteye.com/blog/2199575