Spring是什么

一个轻量级的企业应用开发框架

非侵入式的框架 应用对框架的依赖很小,很多时候应用代码都可以使用POJO风格

POJO:没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。

优点 :低耦合(类与类之间的联系) 高度可配置 易测试 开发简单。

侵入式与非侵入式的区别:

侵入式:

比如说Struts框架,我们在使用该框架的时候必须要继承其框架的一些类,这时框架就与我们的源代码结合,也就是侵入了我们的代码。

优缺点:

开发中可以更好的与框架结合,更充分的利用框架的功能,但是复用性差,如果我们去掉框架,源程序将不能运行,我们需要进行改动程序的时候需要从源代码中更改,这是非常麻烦的。

非侵入式:

如Spring框架,我们在使用Spring框架时无需在代码中继承框架的类,通常只需要配置XML的Sping完成依赖注入就可以使用了,这时框架就没有侵入到我们的源代码中,这就是非侵入式。

优缺点:

非侵入式的代码没有对框架产生过多的依赖,我们在需要修改功能时只需要修改XML配置文件就可以了,如果我们不需要框架了,直接更改XML以及一小部分源代码的一些配置就可以,并不会影响源程序的运行,可以很方便的迁移到其他地方。但是与用户代码互动的方式可能就比较复杂。 

Spring结构框图:

Spring框架基础-LMLPHP

Spring模块

Spring核心模块(Spring Core) :

Spring的核心容器模块,它提供IOC的支持。该模块中包含BeanFactory,它采用工厂模式来实现IOC,负责对bean的生命周期的管理。

Application Context(上下文模块) :

该模块扩展了BeanFactory的功能,例如提供了i18n,系统生命周期以及验证的支持

Spring的AOP模块:

该模块为应用系统的AOP开发提供了支持。

JDBC和DAO模块:

提供了JDBC封装的模板代码,使得使用JDBC开发更加简洁。

ORM映射模块:

该模块提供了对许多流行的ORM框架的支持,其中包括Hibernate,JDO和iBATIS SQL的支持

Spring Web模块:

该模块中Spring提供了对其它的WEB框架的支持,包知Struts,JSF,WEBWORK等

Spring MVC框架:

Spring提供的用于开发WEB应用的MVC框架

Spring核心应用

IOC(控制反转)

程序中各个组件之间的关系,不由程序代码直接操控,而由容器控制。控制权由应用代码中转到了外部容器,即所谓的反转。

更通俗的名称:DI(依赖注入)

各个组件之间的依赖关系不是在程序中写死,而是写在外部的配置文件中,然后运行时通过容器动态注入。

Spring核心容器提供了IOC的具体实现,所有的其它模块都是建立在它的基础之上。

什么是IOC(DI): 把自己new的东西改为由容器提供

有什么好处: 灵活装配

//未使用IOC示例代码
private UserDao userDao = null;
public UserDao getUserDao(){
	//未使用IOC,代码新建Dao的实例
	userDao = new UserDao();
	return userDao;
}
public void saveUser(User user){
	//获取Dao,调用Dao的方法保存用户
	getUserDao().save(user);
}
//使用IOC示例代码
private UserDao userDao = null;
 //容器自动调用该方法注入当前对象依赖的UserDao
public void setUserDao(UserDao userDao){
	this.userDao = userDao ;
}
public void saveUser(User user){
	//获取Dao,调用Dao的方法保存
	 userDao.save(user);
}

 

10-05 21:53