Spring 獲取bean 幾種方式
轉載自: http://www.cnblogs.com/luoluoshidafu/p/5659574.html
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中直接獲取,[email protected]
4.適用工具類ContextLoader.getCurrentWebApplicationContext()。這種最簡單,用起來最方便,不需要繼承,不需要註入,直接使用靜態代碼。註意一點,在服務器啟動時,Spring容器初始化時,不能使用,在應用啟動後方可使用。
Spring 獲取bean 幾種方式