Spring和springmvc父子容器注解扫描问题详解
2017-11-10 19:25
267 查看
一、Spring容器和springmvc容器的关系如下图所示:
Spring和springmvc和作为两个独立的容器,会把扫描到的注解对象分别放到两个不同的容器中,
Springmvc容器是spring容器的一部分,他们访问对象的范围如下所示:
①:springmvc子容器可以访问spring父容器中的对象
②:spring父容器不能访问springmvc子容器中的对象
***在实际应用中的实例***
一般情况下,一个spring / springmvc / mybatis 组合的框架中,会存在以下几个配置文件:
1.applicationContext.xml 文件
说明:在这个里面存在着一个spring的注解扫描器。用来扫描@Service的注解
2 spring-mvc.xml
说明:这个里面存在着springmvc的注解扫描器,专门用来扫描@Controller的注解
然后呢?有同学可能会想,我能不能合并成一个注解扫描器,来完成对象注入的问题?将配置文件中的注解扫描器更改为如下配置:
在1.applicationContext.xml文件中进行全局扫描的配置:
而在spring-mvc.xml中不配置注解扫描器
说明:用这个扫描器分别扫描service层和controller层的注解:@Service
/@Controller / @Autowired
当一旦采用这种方式之后,spring会将扫描的对象都会存放到spring的容器,而不会放到springmvc子容器中,当访问项目的时候,
springmvc找不到处理器映射器,和其对应的Controller,进而报404错误!
不用spring容器,只用springmvc容器行不行呢?
答案:是可以的,在这个里面可以同时扫描Controller层、service层、dao层的注解。
在springmvc 和 spring 都有注解扫描的前提下,能不能将事务配置在Controller层?
答案:是不能的,因为事务管理器是配置在spring容器中的,如果将事务配置在Controller层的话,spring容器就访问不了springmvc子容器,
进而无法访问到事务对象。进而导致事务失效。
Spring和springmvc和作为两个独立的容器,会把扫描到的注解对象分别放到两个不同的容器中,
Springmvc容器是spring容器的一部分,他们访问对象的范围如下所示:
①:springmvc子容器可以访问spring父容器中的对象
②:spring父容器不能访问springmvc子容器中的对象
***在实际应用中的实例***
一般情况下,一个spring / springmvc / mybatis 组合的框架中,会存在以下几个配置文件:
1.applicationContext.xml 文件
<!-- 1. service层扫描器 扫描@service @Resource --> <context:component-scan base-package="com.yinhua.service.impl"></context:component-scan> |
2 spring-mvc.xml
<!-- 配置controller扫描 --> <context:component-scan base-package="com.yinhua.controller" /> |
然后呢?有同学可能会想,我能不能合并成一个注解扫描器,来完成对象注入的问题?将配置文件中的注解扫描器更改为如下配置:
在1.applicationContext.xml文件中进行全局扫描的配置:
而在spring-mvc.xml中不配置注解扫描器
<!-- 配置spring的注解扫描器 --> <context:component-scan base-package="com.yinhua" /> |
/@Controller / @Autowired
当一旦采用这种方式之后,spring会将扫描的对象都会存放到spring的容器,而不会放到springmvc子容器中,当访问项目的时候,
springmvc找不到处理器映射器,和其对应的Controller,进而报404错误!
不用spring容器,只用springmvc容器行不行呢?
答案:是可以的,在这个里面可以同时扫描Controller层、service层、dao层的注解。
在springmvc 和 spring 都有注解扫描的前提下,能不能将事务配置在Controller层?
答案:是不能的,因为事务管理器是配置在spring容器中的,如果将事务配置在Controller层的话,spring容器就访问不了springmvc子容器,
进而无法访问到事务对象。进而导致事务失效。
相关文章推荐
- Spring和springmvc父子容器注解扫描问题详解
- Spring和springmvc父子容器注解扫描问题详解
- Spring 与 SpringMVC 父子容器问题
- spring和springmvc父子容器问题
- 关于Spring大容器和SpringMVC小容器中注解扫描冲突(影响事物回滚)的解决
- Spring以及SPringmvc相关问题: ServletContext -父子容器
- 非J2EE 容器环境下Spring +JPA 多持久化单元/多个JAR归档注解实体 的实体扫描问题及解决办法
- JAVAEE之Spring学习(五)---SpringMVC注解实现功能的详解
- Spring 与 SpringMVC 容器父子关系引出的相应问题
- Spring及springmvc注解(annotation)使用详解
- spring和springMVC父子容器的原理
- Spring和SpringMVC父子容器关系初窥
- 详解SpringMVC注解@initbinder解决类型转换问题
- JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试
- 有spring管理的项目打成jar包无法扫描到注解的问题解决
- 【实用小技巧】spring与springmvc自动扫描包重复的问题解决
- Spring和SpringMVC父子容器关系初窥
- 关于spring和springmvc的xml自动扫描配置问题
- JavaEE框架——Springmvc入门(注解URL核心类详解、文件上传和下载)、和Spring的整合
- spring与springMVC配置扫描的问题