一、概述
1. Spring是一个开源框架,其目的是为了解决企业应用开发的复杂性.
2. Spring功能:使用基本的JavaBean代替EJB,并提供更多的企业应用功能.
3. 简单说,Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架.
二、Spring的jar包和配置文件
1.Spring的jar包
(1)spring的核心类库在spring文档的dist下.
(2)引入的第三方类库在spring文档的lib下.
(3)常用第三方类库www.2cto.com
lib/cglib/cglib-nodep-2.1_3.jar
* 如果使用了@Resource/@PostConstruct/@PreDestroy等注解,需要
lib/j2ee/common-annotations.jar
2.Spring的配置文件
默认是applicationContext.xml文件.
但实际工程中,一般建立多个xml文件,在applicationContext.xml中引入.
三、Spring的基本功能
1.SpringIOC
* spring的控制反转:把对象的创建、初始化、销毁等工作交给spring容器来做,由spring容器控制对象的生命周期.
* spring容器的启动:
(1)在类路径下寻找配置文件来实例化容器(常用):
ApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});
这种方式需要将spring配置文件放到当前项目的classpath路径下.
(2)在文件系统路径下寻找配置文件来实例化容器:
ApplicationContext ac = new FileSystemXmlApplicationContext(new String[]{"d:\\beans.xml"});
* 配置文件可以有多个,通过String数组传入.
2.别名
* 使用别名可以达到,在一个地方命名,多个地方使用不同名字的效果.
3.Spring容器内部对象的创建
(1)使用类构造器实例化(默认是无参数的)
(2)使用静态工厂方法实例化(简单工厂模式)
工厂类:
public class PersonServiceFactory {
public static PersonService createPersonService(){
return new PersonServiceImpl();
}
}
(3)注意,初始化bean时机
* Spring默认在启动时将所有singleton bean提前进行实例化.即作为初始化的一部分.
* ApplicationContext会自动创建并配置所有的singleton bean.
* Lazy-init="false"时,spring容器将在启动的时候报错(可以及时发现错误)
* Lazy-init="true"时,spring容器将在调用该类的时候出错.
4.Bean的作用域(scope属性)
(1)singleton(默认值)
* 在每个spring IoC容器中,一个bean定义只有一个对象实例,即是单例的.
* 默认情况下Bean节点的lazy-init为false,即容器启动就初始化bean,如果想延迟,可改为true
* 如果相对所有bean都延迟初始化,可以在根节点Beans设置default-lazy-init="true"
例如:
(2)prototype
* 允许bean可以被多次实例化(使用一次就创建一个实例).
* spring不能对prototype bean的整个生命周期负责,这就意味着清楚prototype作用域的对象
并释放任何prototype bean所持有的昂贵资源都是客户端的责任
(3)Request
在一次Http请求中,一个bean定义对应一个实例;
即每次Http请求将会有各自的bean实例,它们依据某个bean定义创建而成.
该作用域仅在基于web的Spring ApplicationContext情形下有效.
(4)Session
在一个Http Session中,一个bean定义对应一个实例,该作用域仅在基于web的Spring ApplicationContext情形下有效.
(5)Global session
再一个全局的Http Session中,一个bean定义对应一个实例.
典型情况下,仅在使用portlet context的时候有效.
该作用域仅在基于web的Spring ApplicationContext情形下有效.
(6)指定Bean的初始化方法和销毁方法
* Spring初始化bean或销毁bean时,有时需要作一些处理工作,因此spring可以在创建和拆卸bean的时候调用bean的两个生命周期方.