1.讀取xml文件的方式,這種在初學入門的時候比較適用 。
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:tt.xml");
ApplicationContext applicationContext = new FileSystemXmlApplicationContext("classpath:tt.xml");
2.繼承spring的Aware類,覆蓋方法實現獲取上下文,從上下文中獲取。
2.1.繼承自抽象類ApplicationObjectSupport
說明:抽象類ApplicationObjectSupport提供getApplicationContext()方法,可以方便的獲取到ApplicationContext。
Spring初始化時,會通過該抽象類的setApplicationContext(ApplicationContext context)方法將ApplicationContext 對象注入。
2.2:繼承自抽象類WebApplicationObjectSupport
說明:類似上面方法,調用getWebApplicationContext()獲取WebApplicationContext
2.3:實現接口ApplicationContextAware
說明:實現該接口的setApplicationContext(ApplicationContext context)方法,並保存ApplicationContext 對象。
Spring初始化時,會通過該方法將ApplicationContext對象注入。
private static ApplicationContext applicationContext=null;
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
this.applicationContext = applicationContext;
}
3.借助於spring提供的工具類,
WebApplicationContextUtils.getWebApplicationContext(ServletContext) 需要傳入Servletcontext ,
通常從request中獲取req.getSession().getServletContext()。適合於controller或者action中直接獲取,但通常會直接@autoWire注入。
4.適用工具類ContextLoader.getCurrentWebApplicationContext()。這種最簡單,用起來最方便,不需要繼承,不需要注入,直接使用靜態代碼。注意一點,在服務器啟動時,Spring容器初始化時,不能使用,在應用啟動后方可使用。