1.spring框架的优点
a.方便解耦,简化开发
b.AOP编程支持
c.声明式事务管理
d.方便程序测试
e.方便集成其他框架
f.降低JAVAEE API使用难度
2.spring核心结构
a.spring核心容器:管理Bean的创建、配置、管理 包含springbean工厂 为spring提供DI的功能
b.面向切面编程:帮助应用解耦
c.数据访问与集成
d.Web
e.Test
3.spring核心思想
1.IOC:控制反转 他是一种思想,描述的是JAVA中对象创建 管理交由spring容器完成。
a.解决了对象之间的耦合问题。
2.DI:依赖注入 对象的其他依赖对象注入 (A类中依赖B类 需要将B类注入给A)
BeanFactory: 是个Bean工厂 负责生产和管理bean 的工厂,是IOC容器最底层的接口,是Spring用来管理和装配普通Bean的IOC容器。
FactoryBean:是个Bean 是Spring 提供工厂Bean的一个接口,生成某一个类型Bean实例,可以自定义Bean 的创建过程。
ApplicationContext 是它的一个子接口,具有Beanfactory 所有功能 是容器的高级接口 具有国际化、资源访问等待
3.AOP:面向切面编程(OOP面向对象)
解决了什么问题?
在不改变原有业务逻辑情况下,增强横切逻辑代码,在根本上解耦合,避免横切代码重复
a.切: 指 横切逻辑代码 原有业务逻辑代码我们不能动,只能操作横切逻辑代码,所以⾯向横切逻辑
b.面:横切逻辑代码往往影响多个方法 每个方法都如同一个点 多点成面。
实现方式:
4.spring bean 的生命周期
1.单列模式下
a.对象出生:创建容器,对象就被创建了
b.对象活着:容器在,对象就一直或者。
c.对象死亡:当销毁容器时,对象就被销毁了
单列模式的bean生命周期与容器相同
2.多列模式
a.对象出生:创建容器,对象就被创建了
b.对象活着:容器在,对象就一直或者。
c.对象死亡:对象长时间不使用,被jvm回收
多例模式的bean对象,spring框架只负责创建,不负责销毁。
实例化bean==>设置对象属性==>处理Aware接口==>BeanPostProcessor(这里可以对bean做一些自定义处理)==》InitializingBean 与 init-method:如果配置文件配置这个init-method 则在这个步骤调用其配置的初始化方法==>如果bean实现了BeanPostProcessor接口,将调用postProcessAfterInitialization由于这个方法是在Bean初始化结束时调用的,所以可以被应用于内存或缓存技术==>DisposableBean:当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用其实现的destroy()方法==>destroy-method 最后,如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用其配置的销毁方法。