springMvc中获取spring中的bean

yadg 2015-01-26 02:05:16
我有个类,web.xml 配置
<servlet>
<servlet-name>vdc_ui</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext-servlet.xml</param-value>
<load-on-startup>1</load-on-startup>
</init-param>
</servlet>
applicationContext-servlet.xml中,配置了一个bean,这个bean
<bean id="testA" class="com.bb.testA"></bean>

在controllerer中的某个方法里,使用下面的代码获取:
WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
service=(LogInjectionSaf)webApplicationContextgetBean("testA");
为什么显示 service为null呢,怎么才能得到?
...全文
6556 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010615961 2017-05-18
  • 打赏
  • 举报
回复
自动装配要比实现ApplicationContextAware接口简洁一些

@Controller
public class TestContextController {
	
	@Autowired
	private ApplicationContext applicationContext;

}
深色風信子 2017-02-21
  • 打赏
  • 举报
回复
我在这里给你举一个例子 如果你要在SpringMVC 的 @Controller 层中获取 Spring托管的bean 你可以通过实现 ApplicationContextAware 这个接口 import ************************* import ************************* import ************************* @Controller public class BookController implements ApplicationContextAware { private WebApplicationContext context; @Override //这个是ApplicationContextAware 要实现的接口 public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { context=(WebApplicationContext) applicationContext; } @RequestMapping(value="/go.action") public ModelAndView go(){ ModelAndView mv=new ModelAndView("index"); BookInfoBiz biz=(BookInfoBiz) context.getBean("bookInfoBizImpl"); //然后就这样就可以获取 Spring托管的bean了 List<BookInfo> list=biz.getAllBookInfo(new BookInfo()); mv.addObject("show", list); for(BookInfo l:list){ System.out.println(l); } return mv;//redirect:show.jsp } }
howsun_zh 2015-01-29
  • 打赏
  • 举报
回复 3
WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext(); 这个拿到的是父容器,而testA装配在了applicationContext-servlet子容器里。父容器无法取得子容器bean,反之则可以。 因此,要取得子容器里的testA bean,需要先拿到子容器,如下:

WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext,"org.springframework.web.servlet.FrameworkServlet.CONTEXT.vdc_ui" );
TestA service=(TestA)webApplicationContext.getBean("testA");
yadg 2015-01-28
  • 打赏
  • 举报
回复
配置肯定是有的,我也不想这么配置啊 网上说,他们是2个不同的context,一个是root(spring)的,一个是servlet(mvc)的,servlet里的能获取root里的,反之就获取不到。但是没有给出怎么才能获取到 最后只能把bean的配置挪到applicationContext.xml里了
百里马 2015-01-27
  • 打赏
  • 举报
回复
你直接注入到Controller里不就好了,何必这么麻烦。 若真想如此获取Bean,你可以去实现ApplicationContextAware接口,得到ApplicationContext
  • 打赏
  • 举报
回复
唉,好久都不写XML文件了人了,现在都有点看不懂这些配置了
missMeyo 2015-01-26
  • 打赏
  • 举报
回复
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>context</servlet-name> <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> 这二个应该需要配置

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧