Spring是1个开源框架,Spring是于2003 年兴起的1个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中论述的部份理念和原型衍生而来。它是为了解决企业利用开发的复杂性而创建的。 spring为企业利用的开发提供了1个轻量级的解决方案。该解决方案包括:基于依赖注入的核心机制、基于AOP的声明式事务管理、与多种持久层技术的整合,和优秀的web
mvc框架等。
1 spring构架的组成结构图:
Core Container(核心容器)包括有Core、Beans、Context和Expression Language模块。
Core和Beans模块:框架的基础部份,提供IoC(反转控制)和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真实的允许你从程序逻辑中分离出依赖关系和配置。
Context模块:构建于Core和Beans模块基础之上,提供了1种类似于JNDI注册器的框架势的对象访问方法。Context模块继承了Beans的特性,然后添加了对国际化(例如资源绑定)、事件传播、资源加载和对Context的透明创建的支持。Context模块同时也支持J2EE的1些特性,例如EJB、JMX和基础的远程处理。ApplicationContext接口是Context模块的关键。
Expression Language模块:Expression Language模块提供了1个强大的表达式语言用于在运行时查询和操纵对象。它是JSP2.1规范中定义的unifed expression language的1个扩大。该语言支持设置/获得属性的值、属性的分配、方法的调用、访问数组上下文(accessiong the context of arrays)、容器和索引器、逻辑和算术运算符、命名变量和从Spring的IoC容器中根据名称检索对象。它也支持list投影、选择和1般的list聚合。
JDBC模块:该模块提供了1个JDBC抽象层,它可以消除冗杂的JDBC编码和解析数据库厂商独有的毛病代码。
ORM模块:该模块为流行的对象-关系映照API――JPA、JDO、Hibernate、iBatis等提供了1个交互层。利用ORM封装包,可以混合使用所有Spring提供的特性进行O/R映照。如前边提到的简单声明性事物管理。
2使用Spring管理Bean
spring核心容器的理论:spring核心容器就是1个超级大工厂,所有的对象(包括数据源等基础性资源)都会被当做spring核心容器管理的对象----spring把容器中的1切对象统称为Bean。只要是1个java类,spring就能够管理该java类,并将它当做Bean处理。<spring容器怎样知道管理哪些Bean,XML配置文件(也可用注解),spring使用xml配置文件来管理容器中bean,spring对xml配置文件的文件名没有任何要求,可以随便定义。
上面配置文件中还包括1个<property>子元素,<property>子元素,<property>子元素通经常使用于作为<bean>元素的子元素,它驱动spring在底层以反射履行1次setter方法。其中<property>的name属性值决定履行那个setter方法,而value或ref决定履行setter方法的传入参数。spring框架只要看到<property>子元素,就会在底层以反射方式履行1次setter。
1 如果传入参数是基本类型及其包装类、string等类型,则使用value属性指定传入参数。
2 如果以容器中其他bean作为传入参数,则使用ref属性指定传入参数。
3 spring的优点
1 低侵入式设计,代码的污染极地。
2 独立于各种利用服务器,基于spring框架的利用。
3 它的IoC容器下降了,业务对象体替换的复杂性,提高了组件之间的解耦。
4 spirng的AOP支持允许将1些通用任务如安全、事务、日志等进行集中式处理,从而提高了更好的复用。
5 spring的ORM到DAO提供了与第3方持久层框架的良好整合,并简化了底层的数据库访问。
6 spring的高度开放性,其实不强迫利用完全依赖于spring,开发者可自由选用spring框架的部份或全部。
spring就是1个容器,可以管理任何的java类