博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring容器和springmvc容器,以及web容器的关系
阅读量:6123 次
发布时间:2019-06-21

本文共 1587 字,大约阅读时间需要 5 分钟。

hot3.png

首先 springmvc和spring它俩都是容器,容易就是管理对象的地方,例如Tomcat,就是管理servlet对象的,而springMVC容器和spring容器,就是管理bean对象的地方,再说的直白点,springmvc就是管理controller对象的容器,spring就是管理service和dao的容器。 所以我们在springmvc的配置文件里配置的扫描路径就是controller的路径,而spring的配置文件里自然配的就是service和dao的路径

spring-mvc.xml

<context:component-scan base-package="com.smart.controller" />

applicationContext-service.xml

<!-- 扫描包加载Service实现类 -->

    <context:component-scan base-package="com.smart.service"></context:component-scan>或者<context:component-scan base-package="com.smart">
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan>

spring容器和springmvc容易的关系是父子容器的关系。spring容器是父容器,springmvc是子容器。在子容器里可以访问父容器里的对象,但是在父容器里不可以访问子容器的对象,说的通俗点就是,在controller里可以访问service对象,但是在service里不可以访问controller对象

而web容器是管理servlet,以及监听器(Listener)和过滤器(Filter)的。 这些都是在web容器的掌控范围里。但他们不在spring和springmvc的掌控范围里 。因此,我们无法在这些类中直接使用Spring注解的方式来注入我们需要的对象,是无效的,web容器是无法识别的。

 

那么在这些地方怎么获取spring的bean对象呢?下面提供两个方法:

1、

public void contextInitialized(ServletContextEvent sce) {

  ApplicationContext context = (ApplicationContext) sce.getServletContext().getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE); 
  UserService userService = (UserService) context.getBean("userService");
}
2、

public void contextInitialized(ServletContextEvent sce) {

  WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext()); 
  UserService userService = (UserService) webApplicationContext.getBean("userService"); 
}

转载于:https://my.oschina.net/u/2351011/blog/3027305

你可能感兴趣的文章
POJ-2287 Tian Ji -- The Horse Racing 贪心规则在动态规划中的应用 Or 纯贪心
查看>>
Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月7日-1月14日)
查看>>
关于C#导出 文本文件
查看>>
使用native 查询时,对特殊字符的处理。
查看>>
maclean liu的oracle学习经历--长篇连载
查看>>
ECSHOP调用指定分类的文章列表
查看>>
分享:动态库的链接和链接选项-L,-rpath-link,-rpath
查看>>
Http的操作(不传递参数)
查看>>
MySQL MySql连接数与线程池
查看>>
Java-idea-PMD源文件级别潜在bug查看
查看>>
IStorage
查看>>
选择排序
查看>>
Linux修改主机名【转】
查看>>
vue11 vue实例方法
查看>>
hdu-3401-Trade-单调队列优化的DP
查看>>
心理素质
查看>>
【machine translate】deep learning seq2seq
查看>>
数据结构-向量
查看>>
Java 7 可执行的 Nashorn,取代 Rhino
查看>>
Ubuntu 16.04中CPU轮流100%的问题解决
查看>>