内容来自《Java Web 程序员面试笔试宝典》
【出现频率】★★★★★ 【学习难度】★★★☆☆
答案:Spring是一个轻量级、非侵入性的开源框架,通过基于 POJO(Plain Ordinary Java Object) 对象的编程模型,提供了以前 EJB 才能提供的企业级服务。为Java 应用程序的开发提供了综合、广泛的基础性支持,帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发,大大降低了Java企业应用开发的复杂性。Spring的核心是IoC(控制反转,Inversion of Control)和AOP(面向切面编程,Aspect Oriented Programming),Spring框架的核心功能可用于开发任何Java应用程序。
Spring的优点。
1)Spring 通过控制反转,实现了面向接口的编程,降低了系统的耦合性。
2)Spring 容器可以管理所有托管对象的生命周期和维护它们的依赖关系。开发人员可以无须关心对象的创建和维护它们的依赖,专注于程序的开发。
3)Spring提供面向切面的编程,便于将程序的主要逻辑与次要逻辑分开,将通用业务功能从业务系统中分离出来(如安全、事务、日志等),提高了代码的复用性、程序的可移植性和可维护性。
4)提供了声明式的事务管理支持,只需简单配置或注解声明就可以完成对数据库事务的管理。
5)Spring不重复发明轮子,而是提供对各种优秀框架的封装支持,能无缝集成各种框架,大大降低了开发者使用这些框架的复杂度。如对ORM的支持简化了对数据库的访问;对Junit的支持可以很方便地测试Spring程序。
6)对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等)都提供了封装,使这些API应用难度大大降低。
7)Spring 采用模块化设计,模块之间相互解耦,除核心模块外,开发者可以根据需要选用其他任意模块,Spring 不强制用户使用任何组件。
8)Spring框架轻量级,非侵入性,也具有高度开放性,并不要求应用完全依赖于Spring,开发者可以部分或全部依赖Spring框架。
9)Spring的DAO模块提供了一致的异常处理结构层,简化了对数据库的操作。