Springmvc 陷阱
来源:互联网 发布:html 开发工具 mac 编辑:程序博客网 时间:2024/06/10 10:21
Spring MVC, 你使用了多久呢? 在使用中有没有遇到一些让你困惑的问题呢?
以下是我总结的在使用Spring MVC时需要注意的陷阱
(我使用她3年多了,但有时还是会犯错)
1. 固定特殊bean的id
Spring MVC上传文件时, 我们都需要配置一个MultipartResolver的实现, 常用的是Apache提供的CommonsMultipartResolver类, 配置如下:
简单吧, 但你是否想过这儿配置的id (multipartResolver) 没呢? 试试将id修改为其他的,如 myMultipartResolver, 这还会让上传文件正常工作吗? 本来id仅作为一个唯一的标识即可.但在这儿只能说 NO, 你必须保证id必须是multipartResolver, 其他的还有localeResolver, themeResolver等等.
(有时候因为这点小问题导致抓狂), 为什么要固定bean的id啊? 此是陷阱一.
原因是在Spring MVC的核心类DispatcherServlet中, 把这些bean的id固定了. 你必须保证bean的id相同, 才能正常工作. 对应的代码如下:
如果以后遇到配置是正常的, 但却不工作, 去DispatcherServlet看看bean的id是不是被 固定了.
2. DispatchServlet配置的路径
这个你肯定会配置吧
思考过这儿路径的配置吗? 一般都是"/", 即所有请求都让Spring MVC来处理, 当然也包括静态资源啦, 如js, jpg, css等.
这种方式好吗? 在使用时要小心, 若使用这种配置,
建议在Spring MVC 的配置文件中添加类似下面的配置
这告诉Spring MVC 静态资源到对应的目录下去直接访问而不处任何处理.另一种方式就是使用后缀, 即不配置为"/", 而是配置为类似"*.htm"的方式 也是不错的.
3."两个Spring Context"
当一个项目中既使用 Spring Container, 又使用Spring MVC时, 你觉得项目中只有一个Spring容器还是两个呢?
在这种情况下, 我们都会在web.xml中配置一个container listener
与Spring MVC的DispatchServlet,
考考你: 这两个东西在系统启动时如何加载? 执行顺序是如何的呢?
如果第一个listener对应的容器先执行, 那它知道Spring MVC的容器吗, 但如何反转来呢? 很有意思的问题吧,
仔细去研究下Spring的源码, 会发现更有趣.
换位思考下, 如果是你来实现这两者之间加载的容器, 你会如何实现呢.
还有更多更多的Spring MVC 使用陷阱, 你发现了吗.......
- Springmvc 陷阱
- springmvc使用陷阱
- SpringMVC Controller单例陷阱
- SpringMVC下net.sf.json.JSONObject陷阱
- “陷阱”
- 陷阱!!!!!!!!!
- spring+springMVC 事物管理陷阱, springMVC 加载组件会覆盖父容器组件
- 理想陷阱
- AJAX陷阱
- Deque陷阱
- DB2陷阱
- 美人陷阱
- 词法陷阱
- 语法陷阱
- 语义陷阱
- SQLServer陷阱
- 财务报表陷阱
- ACE陷阱
- 关于nginx平滑均匀加权轮询算法的思考
- 虚拟机中ubuntu自适应屏幕的问题
- 前端懒加载(简易版)
- Linux 调试器之堆栈展开!
- The Pixel Farm PFTrack 2017官方免费版下载附安装教程
- Springmvc 陷阱
- Leetcode 739. Daily Temperatures
- coursera deep learning course2 week3
- 开发中自己遇到的问题和大家分享一下java.io.IOException: tmpFile.renameTo(classFile) failed and(和) failed (2: No suc
- 第十六周Java网络编程
- POJ-1274 The Perfect Stall(二分图最大匹配)
- win10 关闭 取消 开机登录密码
- Spring框架的实现
- 项目三 负数把正数赶出队列