Spring的作用和优势
//整合其他框架,解耦,主要使用Spring容器的两个特性:IoC(控制反转)、AOP(面向切面编程)
- Spring框架是一个整合框架,用于整合其他技术,例如JDBC,Struts,Hibernate等。
- Spring框架提供一个IOC容器,可以管理程序中的组件,建立组件之间的关联,减低耦合。(Spring的核心功能)
- Spring还具有AOP,Spring Web MVC功能。
Spring的基本使用方法---重点
1、Spring IOC应用
a、引入Spring-IOC相关开发包
b、在src添加一个Spring的配置文件:applicationContext.xml
c、将程序组件定义到Spring配置文件中(调构造、静态工厂方法、调用对象方法)
d、实例化Spring的IOC容器对象,从容器获取组件对象
Spring的作用域(<bean>元素属性设置:scope="prototype",默认为singleton)--考虑到线性并发---重点
1、singleton:使用该属性定义Bean时,IOC容器仅创建一个Bean实例(单例),IOC容器每次返回的是同一个Bean实例;
2、prototype:使用该属性定义Bean时,IOC容器可以创建多个Bean实例(原型),每次返回的都是一个新的实例;
3、request:该属性仅对HTTP请求产生作用,使用该属性定义Bean时,每次HTTP请求都会创建一个新的Bean,适用于WebApplicationContext环境;
4、session:该属性仅用于HTTP Session,同一个Session共享一个Bean实例。不同Session使用不同的实例;
5、global-session:该属性仅用于HTTP Session,同session作用域不同的是,所有的Session共享一个Bean实例;
Bean的生命周期回调
1、指定Bean的初始化和销毁方法:
1)scope=“singleton”的Bean组件是在容器创建的时候初始化;
scope="prototype"的Bean是在ac.getBean()时实例化;
2)init-method指定的初始化方法,会在Bean对象创建后自动执行。(适用于singleton和prototype);
3)destroy-method指定的销毁方法,会在容器close时触发执行(只适用于singleton)
Bean延迟实例化(设置<bean>元素的属性lazy-init="true",一般不用)--了解
指定bean依赖关系(用depends-on属性,多个用“,”隔开)--了解
IOC概念:--重点
- Inversion of Control,即“控制反转”--程序中获取对象的方式发生反转,不用new对象,改用第三方框架创建、注入,从而降低对象之间的耦合度。
- IOC按照实现方法不同,可以分为依赖注入-DI和依赖查找两种
- Spring容器是采用DI方式实现了IOC控制,IOC是Spring框架的基础和核心
- DI--Dependency Injection,翻译为“依赖注入”;DI的基本原理是将一起工作关系的对象,通过构造方法参数或方法参数(set方法)传入建立关联,因此容器的工作就是创建bean时注入那些依赖关系,如下面这个例子;
- IOC是一种思想,而DI是实现IOC的主要技术途径,DI主要有两种注入方式,即Setter注入和构造器注入;
例子(此处用Setter注入):
自动装配(设置<bean>元素的属性autowire=" ",默认为no)
待续。。。。。。