标签:
什么是Spring:Spring是一个从实际开发中抽取出来的框架,它对代码中需要重复解决的步骤抽象成为了一个框架。留给开发者的仅仅是与特定应用相关的部分,大大提高了企业应用的开发效率。例外、Spring也提供了一种Template设计原理,对大量的通用步骤进行了封装,开发者只需调用Template,而无须自己再次实现那些通用步骤。
Spring框架的基础:即:工厂模式与服务定位器模式等。
Spring是为企业应用开发提供的一个轻量级解决方案,包括:基于依赖注入的核心机制,基于AOP的声明式事务(联想下编程式事务),整合多种持久层技术的整合,整合很多优秀的WEB MVC框架等。
Spring框架的组成结构图:
使用Spring框架的优点:
1、 低侵入式设计,代码的污染极低
2、 Spring容器降低了业务对象替换的复杂性,提高了组件之间的解耦。
3、 Spring的AOP支持允许将一些通用任务如:安全,事务,日志等进行集中式处理,从而提供了更好的复用。
4、 Spring的ORM和DAO提供了与第三方持久化框架的良好整合,并简化了底层的数据库访问。
5、 Spring的高度开发性,并不强制应用完全依赖于Spring,开发者可自由选择Spring框架的部分或全部。
Spring框架的核心机制---IOC
1、 首先创建一个web应用
2、导入必须的jar文件
(此处采用4.2版本)文件在http://www.springsource.org/download上下载。
3、 编写spring框架的应用上下文配置文件applicationContext.xml,该文件发在src目录下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> </beans>
4、 为了让Spring容器管理实体Bean,我们增加一个些Java类文件。 例如:
package com.my.beans; public class UserInfoT { private Long id; private String userName; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } }
5、 在applicationContext.xml中添加对该对象的配置:
<!-- 由spring容器创建实例化对象,并设置其userName属性 -->
<bean name="userInfoBean" class="com.lovo.beans.UserInfoT">
<property name="userName" value="UserName"></property>
</bean>
6、 最后完成调用
通过前面的实例,程序代码并没有主动设置UserInfoT对象实例的userName属性,但是在执行调用对象实例的属性时,属性值为“UserName”,而属性都是在spring配置文件中配置的,这也就是说,对象实例的属性值不是程序主动设置的,而是由spring容器来负责注入的。
调用者依赖容器设置属性或者注入其他Bean的引用的这种方式,我们通常叫做“依赖注入”或“控制反转”,即springIOC。所谓依赖注入,是指程序运行过程中,如果需要另一个对象协作(调用它的方法,访问它的属性)时,无须在代码中创建被调用者,而是依赖于外部容器的注入。Spring的依赖注入对调用者和被调用者几乎没有任何要求,完全支持对POJO之间依赖关系的管理。
使用依赖注入,不仅可以为Bean注入普通的属性值, 还可以注入其他Bean的引用。通过这种依赖注入,JavaEE应用中的各种组件不需要以硬编码方式耦合在一起,甚至无须使用工厂模式。依赖注入所达到的效果,非常类似于传送的“共产主义”,当某个JAVA实例需要其他JAVA实例时,系统自动提供所需要的实例,无须程序显式获取。
依赖注入是目前最优秀的解耦方式,依赖注入让Spring的Bean以配置文件组织在一起,而不是以硬编码的方式耦合在一起。
在工作中, JAVA实例的调用者通过new关键字来创建被调用者的JAVA实例,程序高度耦合,效率低下,真实的应用极少使用这种方式,一般是初学者最喜欢。
标签:
原文地址:http://www.cnblogs.com/Spirit612/p/5087455.html