一、Spring概述
1.1 Spring特点
Spring是一个开源框架,为企业应用程序开发的复杂性提供一种轻量级解决方案。它主要提供:基于控制反转(Inversion of Control,IoC)的轻量级容器、面向切面编程(Aspect-oriented programming,AOP)支持、优秀的Web MVC框架、多种持久层技术的整合、多种Web MVC框架的整合等,是目前轻量级JavaEE企业应用的首选框架。
1.2 Spring模块
图1-1
Spring框架有7个模块组成(如图1-1):
核心容器:提供了基础功能。包含BeanFactory类(Spring 框架的核心,采用工厂模式实现)
应用上下文模块:扩展了BeanFactory类,添加了对i18N(国际化)、系统生命周期事件及验证的支持,并提供许多企业级服务,如电子邮件服务、JNDI访问、EJB集成、远程调用及定式服务,并支持与模板框架的集成
AOP模块:对面向切面提供了丰富的支持,是Spring应用系统开发面向切面的基础;并引入metadata编程
JDBC和DAO模块:
O/R映射模块:
Web模块:建立在应用上下文模块的基础上,提供了适合Web系统的上下文,另外,该模块支持多项面向Web的任务,如透明处理多文件上传请求,自动将请求参数绑定到业务对象中等
MVC框架:
二、搭建Spring应用开发环境
2.1 Spring的下载和安装
Spring当前GA版本是3.0.5,登录到http://www.springsource.org/站点,单击Powloads链接进入download页面。然后单击Download链接,逐步进入真正的下载页面。
建议下载spring-framework-3.0.5-with-dependencies.zip包,这个压缩中不仅含Spring自身的所有应用包,还含有Spring编译和运行所依赖的第三方类库以及第三方开源框架的应用包。
在应用程序中使用Spring时,需要将spring.jar添加到项目的类路径中,另外还需要添加日志处理包commons-logging.jar以及它的实现包log4j-1.2.15jar(还需要添加他的配置文件log4j.properties)。至于其他的第三方类库,可以在具体需要使用时再加入。
2.2 添加Spring配置文件
一般来说,使用Spring时会在项目的类路径(CLASSPATH)中添加Spring配置文件来声明Spring要管理的内容。通常把这个文件取名为applicationContext.xml,它的内容大致为如下所示的代码片段。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!--配置由Spring来管理的Bean--> <bean id="gdi" class="cn.csdn.dao.GenericDaoImpl"> <property name="say" value="O(∩_∩)O哈哈~"></property> </bean> </beans>
经过以上两个步骤,一个Spring的应用程序基本就搭建好。它的目录结构如图2-1所示。
下面我们来看一个简单的Spring应用程序案例。
三、Spring简单示例
程序清单3.1 SpringService接口将实现从接口中分离出来
package cn.csdn.spring; public interface SpringService { public void display(); }
程序清单1.2 SpringServiceImpl.java将负责打印问候语
package cn.csdn.spring; public class SpringServiceImpl implements SpringService { private String say; public SpringServiceImpl() { // TODO Auto-generated constructor stub } public void setSay(String say) { this.say = say; } @Override public void display() { // TODO Auto-generated method stub System.out.println("J2EE Spring:" + say); } }
程序清单1.3 在Spring中配置
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="ssi" class="cn.csdn.spring.SpringServiceImpl"> <property name="say" value="O(∩_∩)O哈哈~"></property> </bean> </beans>
程序清单1.4 使用JUnit进行测试
package cn.spring.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.csdn.spring.SpringServiceImpl; public class SpringTest { @Test public void test() { ApplicationContext ac = new ClassPathXmlApplicationContext( "applicationContext.xml"); SpringServiceImpl ssi = (SpringServiceImpl) ac.getBean("ssi"); ssi.display(); } }