在專案中獲取Spring的Bean的幾種方式

jsjqjy發表於2009-12-17

1.  方式一 通過Spring提供的工具類獲取ApplicationContext物件

org.springframework.context.ApplicationContext ac2 = org.springframework.web.context.support.WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
		Person Person= (Person) ac2.getBean("Person");
		Person.printStr();

 

這個方式,我們最主要是得到 javax.servlet.ServletContext 物件

如果這個物件在servlet 環境中當然很好得,如果不是的,那我就需要創造這個環境,java B/S專案,只有在web容器中

我們就有辦法做到 :

 

看下面的:

 

我需要在spring的bean中直接獲取,這下可和我們常規的操作有些不同,因為spring的bean都是pojo的。根本見不著servletconfig和servletcontext的影子。 
這裡我需要指出spring給我們提供了兩個介面:org.springframework.web.context.ServletContextAware和 
org.springframework.web.context.ServletConfigAware。我們可以讓我們的bean實現上邊的任何一個介面就能獲取到servletContext了 . 
程式碼如下:
public class DicBean implements ServletContextAware{
    
private ServletContext servletContext;

public void setServletContext(ServletContext sc) {
    this.servletContext=sc;
    System.out.println("專案的絕對路徑為:"+servletContext.getRealPath("/"));
}
}

 

如果在struts2的action中,我們也可以用下面的:

 

javax.servlet.ServletContext servletContext =  org.apache.struts2.ServletActionContext.getServletContext();

 

 

2.方式二  很直接

 

 

//以
		org.springframework.core.io.ClassPathResource isr  = new ClassPathResource("applicationContext.xml");
		XmlBeanFactory factory = new XmlBeanFactory(isr);
		Person Person= (Person) factory.getBean("Person");
		Person.printStr();

 

3.試下

 

在初始化時儲存ApplicationContext物件 
程式碼:
ApplicationContext ac = new FileSystemXmlApplicationContex("applicationContext.xml");
    ac.getBean("beanId");
    說明:
    這種方式適用於採用Spring框架的獨立應用程式,需要程式通過配置檔案手工初始化Spring的情況。

 

 

相關文章