Spring MVC 背景介绍
Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
常见MVC框架比较
运行性能上:
Jsp+servlet>struts1>springmvc>struts2+freemarker>>struts2,ognl,值栈。
开发效率上,基本正好相反。值得强调的是,spring mvc开发效率和struts2不相上下。
下面就先说说Spring2.5与3.0的区别
一、首先,模块的组织更加的细致,从那么多的jar分包就看的出来
二、新特性如下:
Spring Expression Language (Spring表达式语言)
IoC enhancements/Java based bean metadata (Ioc增强/基于Java的bean元数据)
General-purpose type conversion system and UI field formatting system (通用类型转换系统和UI字段格式化系统)
Object to XML mapping functionality (OXM) moved from Spring Web Servicesproject (对象到XML映射功能从Spring WebServices项目移出)
Comprehensive REST support (广泛的REST支持)
@MVC additions (@MVC增强)
Declarative model validation (声明式模型验证)
Early support for Java EE 6 (提前对Java EE6提供支持)
Embedded database support (嵌入式数据库的支持)
三、针对Java 5的核心API升级
1、BeanFactory接口尽可能返回明确的bean实例,例如:
T getBean(String name, Class requiredType)
Map getBeansOfType(Class type)
Spring3对泛型的支持,又进了一步。个人建议泛型应该多用,有百利而无一害!
2、Spring的TaskExecutor接口现在继承自java.util.concurrent.Executor:
扩展的子接口AsyncTaskExecutor支持标准的具有返回结果Futures的Callables。
任务计划,个人还是更喜欢Quartz。
3、新的基于Java5的API和SPI转换器
无状态的ConversionService 和 Converters
取代标准的JDK PropertyEditors
类型化的ApplicationListener,这是一个实现“观察者设计模式”使用的事件监听器。
基于事件的编程模式,好处多多,在项目中应该考虑使用,基于事件、状态迁移的设计思路,有助于理清软件流程,和减少项目的耦合度。