spring概述
首先我们说Spring是一个轻量级的j2ee开源框架,它的作用是为了解决企业应用开发程序的复杂性而创建的,该框架的主要优势是其良好的设计及分层架构。同时,Spring还提供了和其他开源软件的无缝结合,为j2ee应用程序的开发提供了集成的框架。
spring核心
spring的核心是控制反转——ioc,通过配置文件来完成业务对象之间的依赖注入,它鼓励一个良好的习惯,那就是注入对接口的编程而不是对类的编程。
spring给软件开发带来了什么
方便解耦,简化开发
AOP编程的支持
方便集成各种优秀框架(整合struts2,hibernate等)
降低了Java API的使用难度(Spring提供大量工具类,简化代码的编写)
Spring的体系结构
对应jar包
下载地址:http://download.csdn.net/detail/readgo_xxg/5322489
下载完整spring jar包
jar包目录结构
docs 文档目录(api 和 规范)
libs 开发需要的jar包
schema 所有约束文件
导入jar包
进行ico 和 DI 的开发只需要导入spring的核心jar包即可
Spring运行,使用commons-logging日志技术
(commons-logging 和 slf4j 都属于统一日志接口, 整合log4j日志实现 )
导入log4j jar
理解 IOC 和 DI
什么是IOC 什么是DI
IOC: 控制反转,用来解决程序对象耦合问题,将程序中原来构建实例对象的权限交与IOC容器处理,当程序需要对象时,找IOC容器获取
DI: 依赖注入,指程序运行中,如果需要调用另一个对象协助时,无须在创建被调用者的对象,而是依赖外部的注入用以使用
传统代码
//测试
@Test
public void TestRegist(){
UserServlet userServlet = new UserServlet();
userServlet.regist();
}
//表现层
public void regist(){
System.out.println("注册用户 + ...");
//传统写法
UserService userService = new UserService ();
userService.regist();
}
//业务层
public void regist(){
System.out.println("注册用户 + ...");
//传统写法
UserDao userDao = new UserDao();
userDao.regist();
}
现如今将所有对象,交给 IOC 容器(Spring)来管理
(Spring配置文件通常在src或者WEB-INF下,通常名称叫做 applicationContext.xml )
可以参考下载的spring包 docs目录下的 xsd-config.html 文档
通过applicationContext.xml 配置Spring管理对象
在程序中通过applicationContext接口获取spring工厂对象
ClassPathXmlApplicationContext对象 读取src下的配置文件
FileSystemXmlApplicationContext对象 读取WEB-INF下的配置文件
新建配置文件
<!-- 将对象的创建权,交给容器管理 -->
<bean id="userServlet" class="com.qyf.UserServlet" >
<!-- 返回UserServlet时,同时提供 依赖的UserService对象 -->
<!--
name 属性 对应 对象中 setXXX 方法, 代表对象中含有某个属性
ref 引用了另一个Bean对象id
-->
<property name="userService" ref="userService" />
</bean>
<bean id="userService" class="com.qyf.UserServiceImpl"/>
<bean id="userDAO" class="com.qyf.UserDAOImpl" />
IOC通过工厂,从容器中获取创建完成的对象
@Test
public void testRegist(){
//从IOC容器中获取工厂对象
ApplicationContext applicationContext = ClassPathXmlApplicationContext("applicationContext.xml");
//从IOC容器工厂中获取所需对象 (通过配置文件中的bean节点的id属性)
UserServlet userServlet = (UserServlet)applicationContext.getBean("userServlet");
//使用对象方法
userServlet.regist();
}
在通过 IOC 工厂获取对象时,首先要生成对应配置文件的Set方法,Spring 才会提供所需对象
// 依赖注入 (Spring 在构造 UserServlet对象时,同时将构造好 UserService对象,注入到UserServlet对象中 )
private UserService userService;
public void setUserService(UserService userService){
this.userService = userService;
}
以上是简单的Spring 的使用 ,之后还有关于配置文件的编写,AOP的使用,之后会介绍到。
总而言之 Spring 框架单独使用并没有感觉功能强大,但和其他框架共同使用将会彰显它的魅力。