20200229——Spring复习 框架概述以及spring中基于xml的配置 一

spring是分层的javaSE/EE应用,full-stack轻量级开源框架,以IOC控制反转和AOP面向切面编程

spring的优势

方便解耦,简化开发
通过IOC容器,可以将对象的关系交给Spring进行控制管理,避免硬编码所造成的过度程序耦合,用户也不必再为单例模式,属性文件解析这些很底层的代码进行编写
我觉得就是依赖注入和依赖查找
削减耦合,并不是完全消除

AOP编程支持

程序间的耦合
比如jdbc程序,如果我们不引入mysql的驱动包,程序就运行不了

耦合:程序间的依赖关系
包括两种,类之间的依赖关系 方法间的依赖关系

解耦:降低程序间的依赖关系

实际开发中
编译器不依赖,运行时才依赖

解耦的思路
第一步,使用反射来创建对象,而避免使用关键字new
第二步,通过配置文件来获取创建的对象全限定类名

上升到java web
在没有使用spring的时候,表现层调用业务层,需要创建业务层对象的实例
但是这样就具有了耦合行

javabean
bean 在计算机语言中,有可重用的组件
spring就相当于相当于一个bean工厂
创建service和dao对象
第一个 需要配置文件来配置我们service和dao 配置的内容,全限定类名与唯一标识 key,value
第二个 通过读取配置文件中配置内容,创建反射对象

自定义Spring
创建一个BeanFactory
有一个属性
20200229——Spring复习 框架概述以及spring中基于xml的配置 一
在有个静态块
20200229——Spring复习 框架概述以及spring中基于xml的配置 一
在resource文件夹有bean.properties

20200229——Spring复习 框架概述以及spring中基于xml的配置 一
getBean方法获取bean

就可以在表现层通过BeanFactory得到bean对象了

单例多例
我们创建一个map的容器对象,把对象创建好的实例放在容器中,这样就可以实现单例模式,每次都进容器去查找对象
然后不用在getBean方法中每次都创建实例了

** 导入Spring**
创建bean.xml
在beans标签内部,每一个管理的bean用标签注入
id是自己起的名字 class为全限定类名
20200229——Spring复习 框架概述以及spring中基于xml的配置 一

我们要获取相当于我们自定义的内个map,也就是ApplicationContext这个类,在找到他的实体类对象
20200229——Spring复习 框架概述以及spring中基于xml的配置 一

20200229——Spring复习 框架概述以及spring中基于xml的配置 一
根据id获取两种方法

ApplicationContext三个常用实现类
20200229——Spring复习 框架概述以及spring中基于xml的配置 一

ApplicationContext引发问题
ApplicationContext构建核心容器的时候,创建对象采用的策略是用立即加载的方式,读取配置文件马上创建配置文件的内容
而BeanFactorty是采用延迟加载方式,什么根据id获取到了,才创建对象

Spring创建bean的三种方式

第一种
20200229——Spring复习 框架概述以及spring中基于xml的配置 一
必须有默认构造函数

第二种
20200229——Spring复习 框架概述以及spring中基于xml的配置 一
利用工厂创建

第三种
20200229——Spring复习 框架概述以及spring中基于xml的配置 一用静态方法

bean的作用范围
bean对象默认是单例的
但是bean标签有一个scope属性,作用是用于指定bean的作用范围

singleton 单例
prototype 多例
request 作用于web应用的请求范围
session 组用于web应用的会话范围
global-session 作用于集群环境的会话范围

bean生命周期
单例对象 与容器生命周期相同

多例对象 使用对象的时候Spring会帮我们创建, 对象只要在使用就一直存在,长时间不用会被java回收器回收

依赖注入
20200229——Spring复习 框架概述以及spring中基于xml的配置 一

简单来说,就当前类中的属性,基本数据类型和bean类型 集合类型

第一种
构造函数提供

20200229——Spring复习 框架概述以及spring中基于xml的配置 一
比如在这个程序中我们birthday是日期类型,那么我们可以
20200229——Spring复习 框架概述以及spring中基于xml的配置 一
把上面的value属性改为ref ref =“now”
20200229——Spring复习 框架概述以及spring中基于xml的配置 一

小总结,value是提供基本数据类型和String
ref 是指的是其他的bean

这种构造函数的弊端
20200229——Spring复习 框架概述以及spring中基于xml的配置 一

第二种是今后使用的依赖注入
有set方法可以注入
20200229——Spring复习 框架概述以及spring中基于xml的配置 一

20200229——Spring复习 框架概述以及spring中基于xml的配置 一

20200229——Spring复习 框架概述以及spring中基于xml的配置 一