什么是Spring?它有哪些好处?
Spring是一个轻量级控制反转(IOC)和面向切面(AOP)的容器框架,
它主要是为了解决企业应用开发的复杂性而诞生的:
目的:解决企业级应用开发的复杂性。
功能:使用基本的JavaBean代替EJB。
范围:任何Java应用。
Spring的存在是因为它自身的得天独厚的优势:它定位的领域是许多其他流行的framework没有的。Spring是全面的和模块化的。它的设计从底部帮助你编写易于测试的代码。Spring是潜在一站式解决方案。Spring天生就存在如下的优点:低侵入式设计,代码污染极低。Write Once,Run AnywhereDI有效的降低了耦合度。AOP提供了通用的任务的集中管理。ORM和DAO简化了对数据库的访问。高度开放性,并不强制(贯穿于变现层,业务层,持久层)Spring的优点给开发带来的好处:可以有效组织中间层对象。使用同一的配置文件。促进良好的编程习惯,减少编程代价。易于单元测试。(一Spring基本组就是JavaBean,二提供了对Juit的支持)使EJB成为一种备选。为数据存取提供了一致性的框架。

Spring特点:方便解耦,简化开发。AOP(面向切面编程)的支持。声明式事物的支持方便程序的测试方便集成各种优秀框架。降低JavaEE API使用难度。Spring的源码是经典学习范例。附AOP通俗的理解:
一个组件A,不关心其他常用的服务组件B,但是这个组件A使用B的时候,不是组件A自身去调用,而是通过配置等其他方式,列如Spring中可以通过XML配置文件。这样就使得A压根就不需要知道服务组件B是怎么样的,爱存在不存在,爱怎么样存在都与A无关。A只需要关心自己的业务逻辑,具体A使用B的时候,配置文件去做,与具体的A组件无关。
附IOC通俗的理解如下:
IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,
侧重于原理。
DI依赖注入:说的是创建对象实例时,为这个对象注入属性值或其他对象实例后,侧重于实现。