1)关系说明

spring 与 springmvc 父子关系:spring (父容器),springmvc (子容器)

springmvc(子)--- 可调用 --> spring(父) 中的 bean,属性值等
但 spring(父)-- 不可调用 --> springmvc(子) 中的 bean,属性值等

2)配置原则

spring-context.xml
<!-- 启动组件扫描,排除@Controller的组件,因为控制器组件由SpringMVC配置文件扫描 -->
<context:component-scan base-package="com.***.***">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

springmvc.xml
<!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器,要有use-default-filters="false" -->
<context:component-scan base-package="com.***.***.controller" >
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

success:
url --> servlet --> springmvc(访问 controller,所以 controller 必须放到springmvc容器)
springmvc --> spring(controller 调用 service,dao)

error:
把 controller 放到 spring 容器,不放到 springmvc 出现的问题:
url --> servlet --> springmvc(spring 会将扫描的对象都会存放到 spring 的容器,而不会放到 springmvc 子容器中,当访问项目的时候,springmvc 通过处理器映射器找不到和其对应的 Controller,报
404 错误! )

spring 容器不扫描,全部放到 springmvc 中扫描出现的问题: 
在里面可以同时扫描 controller层、service层、dao层 的注解,但是,子容器controller 进行扫描装配时装配了 @Service注解 的实例,而该实例理应由父容器进行初始化以保证事务的增强处理(因为事务管理器是配置在 spring 容器中的),所以此时得到的将是原样的 Service(没有经过事务加强处理,没有事务处理能力,无法访问到事务对象,导致事务失效)

@Value("${name}") 取不到 properties 文件中定义的变量值
<!-- 配置文件引入 -->
<context:property-placeholder location="classpath:application.properties"
ignore-resource-not-found="true" ignore-unresolvable="true" />
service,dao 中不能 @Value 配置在 springmvc.xml 的properties (父容器 -- 不能访问 --> 子容器 的东西)

Spring 与 SpringMVC 容器父子关系引出的相应问题的更多相关文章

  1. spring 与springmvc容器的关系

    spring容器是springmvc的父容器,而父容器是不能访问子容器中的东西,但子容器可以访问父容器的东西

  2. spring与springMVC的父子容器关系

    背景和概述 在spring与springMVC中通过IOC可以管理bean对象,有两个配置文件可以配置ioc spring的配置文件applicationContext.xmlspringMVC的配置 ...

  3. spring盒springMVC整合父子容器问题:整合Spring时Service层为什么不做全局包扫描详解

    整合Spring时Service层为什么不做全局包扫描详解 一.Spring和SpringMVC的父子容器关系 1.讲问题之前要先明白一个关系 一般来说,我们在整合Spring和SpringMVC这两 ...

  4. Spring 和SpringMVC 的父子容器关系

      Spring和SpringMVC作为Bean管理容器和MVC层的默认框架,已被众多WEB应用采用,而实际使用时,由于有了强大的注解功能,很多基于XML的配置方式已经被替代,但是在实际项目中,同时配 ...

  5. 父(Spring)子(SpringMVC)容器之初解篇

    Spring和SpringMVC作为Bean管理容器和MVC层的默认框架,已被众多WEB应用采用,而在实际开发中,由于有了强大的注解功能,很多基于XML的配置方式已经被替代,但在实际项目中,我们经常会 ...

  6. Spring和SpringMVC整合及关系

    SpringMVC扼要的讲,就是控制请求和处理.有必要将Spring和SpringMVC整合,否则仅配置SpringMVC并完成Spring的功能,会造成业务逻辑混乱. 简要总结:①原理:采用监听器, ...

  7. Spring和SpringMVC父子容器关系初窥

    一.背景 最近由于项目的包扫描出现了问题,在解决问题的过程中,偶然发现了Spring和SpringMVC是有父子容器关系的,而且正是因为这个才往往会出现包扫描的问题,我们在此来分析和理解Spring和 ...

  8. (转载)Spring与SpringMVC父子容器的关系与初始化

    转自 https://blog.csdn.net/dhaiuda/article/details/80026354 Spring和SpringMVC的容器具有父子关系,Spring容器为父容器,Spr ...

  9. spring容器和springmvc容器,以及web容器的关系

    说到spring和springmvc,其实有很多人分不清他们有什么区别,认为它俩是一样的,如果你问他项目里用的什么MVC技术,他会说我们用的spring和mybatis,或者spring和hibern ...

随机推荐

  1. 到底什么是BFC、IFC、GFC和FFC,次奥?

    软件开发的一般被称为民工,搞前端的,有人形容为是掏粪工,说白了连民工级别高都没有.说直接点就是个制作界面的,注意,连设计界面的都算不上,一般前端都是拿着设计稿去照这样子开发的. 说这些无非是觉得前端前 ...

  2. 欢迎来怼—第三次Scrum会议

    一.会议成员 队名:欢迎来怼队长:田继平队员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华小组照片: 二.会议时间 2017年10月15日    17:15-17:41   总用时26min 三.会议地点 ...

  3. Python学习之路7 - 生成器&迭代器

    本章内容: 列表生成式 生成器 yield 迭代器 列表生成式 当我们要定义一个列表的时候,我们通常用这种方式a = [1,2,3],但是如果我们定义了一个比较长的列表的时候,手动定义列表就会比较麻烦 ...

  4. java调试器

    javac.exe是编译.java文件 java.exe是执行编译好的.class文件 javadoc.exe是生成Java说明文档 jdb.exe是Java调试器 javaprof.exe是剖析工具 ...

  5. 读我是一只IT小小鸟有感

    进入大学半年了,每个人都说软件工程是一个非常有前途的高薪职业,但我这半年来都很迷茫,看不清自己的未来,不知道如何度过接下来的三年半时光,虽然我也认为软件工程是有前途的专业,但是经过一学期的学习,发现不 ...

  6. maven项目org.springframework.web.context.ContextLoaderListener的异常和tomcat zipexception的异常

    使用到spring的maven web项目,在运行servers时,报错找不到org.springframework.web.context.ContextLoaderListener,web.xml ...

  7. 关于解决java读取excel文件遇空行抛空指针的问题 !

    关于解决java读取excel文件遇空行抛空指针的问题 ! package exceRead; import java.io.File; import java.io.FileInputStream; ...

  8. linux mysql表名大小写

    1.用ROOT登录,修改/etc/my.cnf 2.在[mysqld]下加入一行:lower_case_table_names=1 0:区分大小写,1:不区分大小写 3.重新启动数据库即可

  9. 'phantomjs.exe' executable needs to be in PATH. (selenium PhantomJS python)

    今天selenium PhantomJS python用了下,发现报错,提示我:'phantomjs.exe' executable needs to be in PATH. from seleniu ...

  10. 第166天:canvas绘制饼状图动画

    canvas绘制饼状图动画 1.HTML <!DOCTYPE html> <html lang="en"> <head> <meta ch ...