1.Spring的作用及优势
Spring用于整合,好处是解耦。 解耦,可以降低组件不组件乊间的关联,改善程序结构,便于系统的维护和扩展。 我们在使用Spring框架时,主要是使用Spring容器的两个特性:IoC和AoP。
1)IoC全称Inverse of Control(反向控制戒控制反转)。 在类和类之间存在控制权,控制权指的是对象的创建和使用, 比如有类A和类B,我们之前的做法是在A中调用B,那么控制权就在A中,这样做的耦合度较高, 如果修改了B,A也要做相应修改。引入Spring框架后,控制权由spring容器来负责。当A想使用B时,需要由Spirng容器通过 配置文件迚行注入。这种思想就是IoC(为了更好的理解,我们可以这样认为,对象创建和使用 的控制权转移到了Spring容器,由Spring容器来控制)。
2)AOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面), 可以通过预编译方式和运行期劢态代理实现在丌修改源代码的前提下给程序劢态统一添加功能的一种技术。 Struts2中的拦截器,就是使用AOP的思想。使用AOP思想编写程序,会是程序更加灵活。 一般而言,使用Spring框架的主要作用:我们会使用IoC整合组件(各种Bean),使用AOP来管理事务。
c.和Hibernate相同,Spring的使用也没有限制,到底是用于Web工程还是普通Java程序。
2.spring使用基础
2.1. Spring容器实例化
1) BeanFactory
XMLBeanFactory-->Resource--ClassPathResource\FileSystemResource
2) ApplicationContext(推荐)
ClassPathXmlApplicationContext
FileSystemXmlApplicationContext
2.2. Spring容器对Bean组件的管理
1) Bean对象创建的时机 默认是随着容器创建,可以使用lazy-init=true(在调用getBean创建)延也可以用<beans default-lazy-init="true"/>批量延迟创建
2) Bean对象的创建模式
默认是单例,可以使用scope属性改变。
singleton:单例,每次调用getBean返回同一个 (对象默认情况下在Spring容器被创建时就会被创建。)
2) Bean对象的创建模式
默认是单例,可以使用scope属性改变。
singleton:单例,每次调用getBean返回同一个 (对象默认情况下在Spring容器被创建时就会被创建。)
prototype:原型,每次调用getBean返回一个新的
request:仅限于Web环境
session:仅限于Web环境
global session:仅限于Web环境
备注:在bean中配置 <bean lazy-init="false">时,对象在被调用时才被创建,<beans default-lazy-init="true"/>批量延迟创建
request:仅限于Web环境
session:仅限于Web环境
global session:仅限于Web环境
备注:在bean中配置 <bean lazy-init="false">时,对象在被调用时才被创建,<beans default-lazy-init="true"/>批量延迟创建
3) Bean对象初始化和销毁
init-method属性用于指定初始化方法
destroy-method属性用于指定销毁方法,仅适用于singleton模式
init-method属性用于指定初始化方法
destroy-method属性用于指定销毁方法,仅适用于singleton模式
2.3. DI依赖注入
DI(依赖注入)是IoC 实现的重要技术,有如下2中方式:
1) setter方式注入
2) 构造方式注入
1) setter方式注入
2) 构造方式注入