程序员人生 网站导航

Spring---简介

栏目:php教程时间:2015-08-22 09:49:18

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配置文件的文件名没有任何要求,可以随便定义。


<bean id="person" class="org.crazyit.app.service.Person"> <property name="axe" ref="axe"/> </bean> <bean id="axe" class="org.crazylit.app.service.Axe"/> <bean id="win" class="javax.swing.JFrame"/> <bean id="date" class="java.util.Date"/></span></span>


配置文件中的<bean>元素默许以反射方式来调用该类无参数的构造器。spring框架通过反射根据<bean>元素的class属性指定的类名创建了1个java对象,并以<bean>元素的id属性的值为key,将该对象放入spring容器中---这个java对象就成了spring容器中bean。在spring配置文件中配置bean时,class属性的值必须是bean实现类的完全类名(必须带包名),不能是接口、抽象类,否则没法使用spring没法使用反射创建该类的实例。

       上面配置文件中还包括1个<property>子元素,<property>子元素,<property>子元素通经常使用于作为<bean>元素的子元素,它驱动spring在底层以反射履行1次setter方法。其中<property>的name属性值决定履行那个setter方法,而value或ref决定履行setter方法的传入参数。spring框架只要看到<property>子元素,就会在底层以反射方式履行1次setter。

       1 如果传入参数是基本类型及其包装类、string等类型,则使用value属性指定传入参数。

       2 如果以容器中其他bean作为传入参数,则使用ref属性指定传入参数。

<bean id="person" class="org.crazyit.app.service.Person"></span>

Spring框架解析该<bean>元素后将可以得到两个字符串,其中idStr的值为"date",classStr的值为“java.util.Date”。

3 spring的优点

1 低侵入式设计,代码的污染极地。
2 独立于各种利用服务器,基于spring框架的利用。
3 它的IoC容器下降了,业务对象体替换的复杂性,提高了组件之间的解耦。
4 spirng的AOP支持允许将1些通用任务如安全、事务、日志等进行集中式处理,从而提高了更好的复用。
5 spring的ORM到DAO提供了与第3方持久层框架的良好整合,并简化了底层的数据库访问。
6 spring的高度开放性,其实不强迫利用完全依赖于spring,开发者可自由选用spring框架的部份或全部。


4总结:

   spring就是1个容器,可以管理任何的java类



------分隔线----------------------------
------分隔线----------------------------

最新技术推荐