石家庄网站seo,制作网站需要哪些工作,企业网络营销策划方案3000字内容,浏览器收录网站文章目录 spring与springmvc整合重复创建bean容器关系获取spring容器上下文 spring与springmvc整合
在项目中使用springmvc的时候#xff0c;由于spring和springmvc是同源的#xff0c;有时候大家会把所有的配置都扔到springmvc的配置文件中#xff0c;而不去区分spring和s… 文章目录 spring与springmvc整合重复创建bean容器关系获取spring容器上下文 spring与springmvc整合
在项目中使用springmvc的时候由于spring和springmvc是同源的有时候大家会把所有的配置都扔到springmvc的配置文件中而不去区分spring和springmvc的配置而我习惯于把两个配置拆分开来spring来配置数据源、事务以及和其他框架的整合springmvc来配置web相关的一些配置。
在这里给大家说明一下两者配置整合时可能会遇到的一些问题
之前在 web应用使用spring 一节中说过如何在web应用中加载spring容器使用的是是监听器这里就不赘述了可以去搜一下之前的文章
重复创建bean
当springmvc的配置文件和spring的配置文件分离的时候由于现在使用注解的比较多大多都是用组件扫描
如果两个配置文件都使用context:component-scan base-package“com.zhanghe.study.springmvc”/来进行组件扫描的话会导致两个配置文件都扫一遍这些组件这些bean都会创建两次
这时候就用到了context:exclude-filter和context:include-filter来进行设置过滤了
springmvc只需要管控制器Controller就可以了所以在springmvc的配置文件中配置
context:component-scan base-packagecom.zhanghe.study.springmvc use-default-filtersfalsecontext:include-filter typeannotation expressionorg.springframework.stereotype.Controller/
/context:component-scan而spring的配置文件中只需要相应的排除掉springmvc扫描的
context:component-scan base-packagecom.zhanghe.study.springmvccontext:exclude-filter typeannotation expressionorg.springframework.stereotype.Controller/
/context:component-scan容器关系
springmvc容器是spring容器的子容器springmvc容器可以访问spring容器中的bean反之则不行
获取spring容器上下文
在项目启动的时候监听器中会在web应用环境初始化的时候将spring的上下文内容存在应用上下文中
servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, this.context);所以在取出来时只需要获取到应用上下文
req.getServletContext()然后取出来即可
context.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)参考文献
spring与springmvc整合