SpringMVC学习 (五)
来源:互联网 发布:通用域名注册 编辑:程序博客网 时间:2024/06/02 10:02
springMVC与spring的整合
springMVC仅仅好比一个组件,而spring却是一个平台。spring平台可以用来整合springMVC、Hibernate,就像是面包板一样。
当然,在不使用spring的情况下,完全可以使用springMVC去整合其他组件,但是这样的话,就使得
springMVC无法专注于自己的web层框架了。毕竟,springMVC中带个“MVC”,它主要用来处理web相关的事务。
因此,项目工程中建议使用spring作为基础,整合各个组件。
如何整合
单独的springMVC基本只需要两个配置文件:web.xml和dispatcherServlet-servlet.xml文件。
前者配置了dispatcherServlet类和contextConfigLocation,即实现servlet对请求的过滤和对dispatcherServlet-servlet.xml的加载。
而具体的视图解析器InternalResourceViewResolver,default-servlet-handler,annotation-driven以及自定义的拦截器、格式转换器等等都是在dispatcherServlet-servlet.xml中配置的。
同时,还在其中配置了标签,对所有组件进行自动扫描。
如今有了spring就不应该让所有的组件被springMVC扫描,而是,除了跟Controller相关的组件之外,其他的组件改为——被spring扫描加载,比如@Service、@Component、@Entity等等。
如果两边都配置了component-scan,并且均为全路径扫描,必然导致所有的组件被初始化两次。
因此在springMVC的配置中(dispatcherServlet-servlet.xml)应该为:
<context:component-scan base-package="com.ghost.spring.employee" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>
而在spring的配置中(beans.xml)应该这样:
<context:component-scan base-package="com.ghost.spring.employee"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>
注意二者的写法不同。
前者中仅包含controller相关的东西,user-default-filters=“false”
而后者并不需要配user-default-filters,默认为true,即全路径扫描,仅仅是exclude跟Controller相关的组件。
如果扫描功能配置有误,则在服务启动过程中会爆出bean无法实例化或Autowired等等。
调用的大小关系
由于springMVC调用底层相关,即controller调用service,可以看出springMVC大于spring,前者可以调用后者的组件,而后者是无法调用前者的组件的。这一点应该牢记。
- SpringMVC学习 (五)
- SpringMVC学习笔记(五)
- springmvc学习笔记(五)开启注解
- SpringMVC学习笔记(五):参数传递
- SpringMVC学习(五)-RESTFUl_CRUD操作
- SpringMVC学习(五)--异常处理
- SpringMVC学习总结(五)
- SpringMVC(五)
- mybatis学习笔记五(与springMVC的集成)
- springMVC学习笔记五(拦截器详解)
- SpringMVC源代码学习(五)九大组件下
- SpringMVC学习笔记(五)验证用户输入
- SpringMVC学习(五) 视图和视图解析器
- springmvc(五)springmvc和mybatis整合
- SpringMVC学习记录(五)--表单标签
- SpringBoot学习笔记(五):SpringBoot与SpringMvc
- SpringMVC学习(五)——SpringMVC的参数绑定
- 深入浅出Spring(五) SpringMVC
- Oracle自动提交,主键自定生成
- GitHub上史上最全的Android开源项目分类汇总
- Flume NG源码分析(七)ChannelSelector
- C++12.3 (下) 类作用域中名字查找(局部和全局)
- android第一天Android环境的搭建
- SpringMVC学习 (五)
- 初级ABAPer考题
- 百度ueditor上传图片时设置默认宽高度
- HBase数据库性能调优(1)
- SKTexure To UIImage,即 SpriteKit 截屏
- 彻底理解ThreadLocal
- Java并发编程实践 读书笔记
- Git代码行统计命令集
- 双向队列