一、为什么要用Spring进行开发(Spring帮我们做了什么)
这个问题我的切入点是我们没有用Spring的时候如何进行程序开发。( 回想没用Spring的时代我们用纯jdbc也可以建立一个系统,实现相关的功能, 但是我们的操作流程比较多,需要写的代码也比较多,有了Spring后,我们可以简化很多操作)。
1.1、数据源管理(Spring JDBC)、我们不用像jdbc那样获取连接、关闭连接、
1.2、数据ORM映射(Spring ORM)、我们可以更加高效的操作我们的实体类,而不需要进行每个字段的转换
1.3、提供面向切面编程(Spring AOP)、Spring中我们在中引入了Cglib、jdk进行AOP管理、我们可以轻松的将
我们需要的操作切入对应的切点,实现日志、事务、权限等功能
1.4、万能胶一样整合其他框架(ssh 、ssm)等
1.5、基于Bean的生命周期管理(SpringContext)
二、Spring有哪些核心模块以及各模块的职责
CoreContainer:
1、Spring Core 、
2、Spring Beans、
3、Spring Context、
4、Spring Experssion
Web:
1、Spring Web 、
2、Spring Web Mvc、
3、Spring Web Socket
DataAccess
1、Spring Jdbc、
2、Spring ORM、
3、JMS
Other:
1、AOP
模块作用:
1、SpringCore与SpringBean 实现Ioc,通过接口和类之间的描述将Bean的创建交给Spring容器进行管理
2、Spring Context 提供创建Bean的生命周期管理
3、Spring JDBC 提供程序与数据库数据访问
4、Spring ORM 提供对象和数据库字段关系映射
5、AOP实现日志、权限、等
6、Spring Web建立在容器之上提供基础支撑(通过Servlet或者Listern初始化Ioc容器)
7、Spring Web mvc 实现model -view-controller
三、Spring 大家关注的三个问题
3.1、Bean的生命周期
第一阶段:实例化
实例化是指Bean 从Class到Object
第二阶段:初始化前
org.springFrameWork.beans.factory.config.BeanPostProcessor#postProcessBeforeInitialization
第三阶段: 初始化
org.springFrameWork.bean.InitializingBean#afterPropertiesSet
第四阶段初始化后
org.springFrameWork.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization
第五阶段:销毁
org.springFrameWork.bean.factory.DisposableBean#destory
3.2、Ioc(DI)
控制反转:将创建Bean的任务从人手动的创建一个对象变为Spring容器去创建一个对象。我们只用
描述对象间的关系即可。
依赖注入:依赖注入这里分为两个部分:1、依赖查找 2、依赖注入 ,其中控制反转主要是依赖注入
进行实现的,所以控制反转又名依赖注入。
1、依赖查找:就是根据各种配置文件、注解找到需要进行容器管理的类和接口信息
2、依赖注入:将依赖查找到的类信息封装成BeanDefinition,用BeanFactory进行创建并且注册将
Beandefintion注册到Ioc容器
Ioc容器的初始化:1、定位 2、加载 3、注册
2. 1、定位:
//根据 Xml 配置文件创建 Resource 资源对象,该对象中包含了 BeanDefinition 的信息(想想我们ssm注册数据源database)
ClassPathResource resource =new ClassPathResource("application-context.xml");
2.2、加载:
将读取到信息形成一个个BeanDefinition
2.3、注册
当用户调用getBean的时候进行BeanDefinition的注册
四、Aop
面向切面编程:这是一种编程思想,通过在系统的注入切点实现相关的功能,如日志、权限等,
在Spring中AOP的实现有两种:1、Jdk 2、Cglib.