如果我們的系統不是分布式的(在分布式里,我一般自己加載spring的配置文件),不是一般的application,通過自己加載Spring的配置文件的方式。而是一般的web應用,我們通過在web.xml里配置spring的配置文件。我們怎么方便的得到一個Bean的實例呢?當然,web應用啟動后,它已經創建好一個WebApplicationContext(這個是接口,其實也是ApplicationContext類型的,因為WebApplicationContext繼承自ApplictionContext這個接口)類型的實例對象,通過org.springframework.web.context.support.WebApplicationContextUtils里的
getWebApplicationContext(ServletContext sc)可以得到這個對象的引用(這個就像我們一般的java application下得到ApplicationContext類型的引用一樣),我們就可以通過它的getBean方法得到我們的bean實例了。但是這里有個問題getWebApplicationContext(ServletContext sc)這個方法的參數ServletContext代表的是你web應用的環境,也就是說,也就是說web應用環境下特有的。這個時候如果你想得到一個bean的話,必須要有這個ServletContext對象存在,如果你每個類里都寫一個方法來接受ServletContext對象,從而得到WebApplicationContext類型實例的引用,之后再得到bean,進行你要的操作,這個是不是很麻煩?這個不是要寫很多代碼么?我覺得可以把獲得bean的這個操作的功能代碼放在一個Servlet里,讓這個Servlet在web應用啟動的時候加載,我們之后把這個Servlet當作普通類使用,調用里面的getBean方法就可以了。這個servlet的代碼如下:






















web.xml配置里:

































紅色也可以為:





使用示例:
假使我有一個Person的類,屬性有name和age,在spring配置文件里配置的id為“person”
你在你的servlet或者jsp想得到這個實例的時候,直接這么做就可以了:
Person person=(Person)GetBeanServlet.getBean("person");