在Spring框架中的后台JavaBean一般都受Spring控制,例如Service、DAO等,我们在不受Spring控制的JavaBean中需要调用这些受控JavaBean的时候,比如要扩展一个系统地功能,我遇到的是扩展Struts2的一个标签类,需调用DAO,通常的方法可以使用ClassPathXmlApplicationContext或者其他的类来取得定义这些Bean的spring的xml文件,然后再生成Bean,但是,既然这些xml文件都已经在系统加载时已经加载,又没有直接的方法?
经过在论坛上讨教发现如下方法:
<p>@SuppressWarnings("unused") ServletContext servletContext = pageContext.getServletContext();
WebApplicationContext springCtx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
DictionarySelectTagDAO dictDAO = (DictionarySelectTagDAO)springCtx.getBean("dictDAO");
List dlist = dictDAO.selectDictionaryList("Dict.select-all-user"); </p>