spring笔记-核心思想、Spring IOC
核心思想
IOC
-
IOC 控制反转,是一个技术思想,不是技术实现;
Java开发领域对象的创建、管理问题
不用自己去new对象,用IoC容器帮助我们实例化对象并管理它,需要使用到哪个对象,去找IoC容器即可
控制:对象创建/实例化的权力
反转:控制权交给外部环境(Spring框架、IoC容器)
-
IoC解决了对象之间的耦合问题
- IoC和DI的区别
DI:依赖注入
Ioc和DI描述的是一件事:对象实例化及依赖维护,角度不同
IoC站在对象的角度,对象实例化及其管理的权力反转交给了容器
DI是站在容器角度,容器会把对象依赖的其他对象注入
AOP
-
AOP:面向切面编程/面向方面编程
AOP是OOP的延续
OOP三大特征:封装、继承、多态
OOP是一种垂直继承体系
OOP处理不了多个方法中相同位置出现的重复代码
横切逻辑代码:
存在的问题:
1、横切代码重复
2、横切逻辑代码和业务逻辑代码混在一起,代码臃肿,维护不方便
AOP提出横向抽取机制,将横切逻辑代码和业务逻辑代码分离:
横切逻辑代码如何在不改变原有业务逻辑的情况下,应用到原有业务逻辑中
-
AOP解决什么问题
在不改变原有业务逻辑情况下,增强横切逻辑代码,根本上解耦合,必变横切逻辑代码重复
-
为什么叫面向切面编程
切面:横切逻辑,原有业务逻辑代码不能懂,只能操作横切逻辑代码,影响多个方法
Spring IOC
1、beans.xml:定义需要实例化对象的类的全限定类名以及类之间依赖关系描述
2、BeanFactory(IoC容器)通过反射来实例化对象并维护对象之间的依赖关系
Spring IOC 实现
1、纯xml(bean信息定义全部配置在xml中)
2、Xml+注解
3、纯注解模式
BeanFactory 和 ApplicationContext的区别
BeanFactory是Spring框架中IoC容器的顶层接口,它只用来定义一些基础功能和规范
AoolicationContext是它的一个子接口,具备BeanFactory提供的全部功能
通常我们称BeanFactory为SpringIoC的基础容器,ApplicationContext是容器的额高级接口,比BeanFactory拥有更多的功能,比如国际化支持和资源访问等
Bean实例化的三种方式
1、使用无参构造器(推荐)
为了自己new的对象加入到SpringIoc容器管理中
2、静态方法
<bean id="" class="" factrory-method=""/>
3、实例化方法
<bean id="" class="" />
<bean id”” factory-bean=”” factory-method=””>
Bean的作用范围以及生命周期
作用范围:scop
-
singleton 单例,容器中只有该对象
-
Prototype 原型(多例模式),每次使用都返回新的对象,只创建对象,不管理对象Reuqest session application websocket web应用中可能会用到
生命周期
-
单例模式:singleton
-
对象出生:当创建容器时,对象创建
-
对象活着:只要容器在,对象一直活着
-
对象死亡:当销毁容器时,对象被销毁
-
总结:单例模式的bean对象生命周期与容器相同
-
多例模式:Prototype
-
对象出生:当使用对象时,对象创建
-
对象活着:只要对象在使用中,对象一直活着
-
对象死亡:当对象长时间不用时,被java的垃圾回收器回收
-
总结:多例模式的bean对象,spring框架只负责创建,不负责销毁
注解
@Autowired 按照类型注入,如果按照类型无法唯一锁定对象,可以结合@Qualifier指定具体id
@Congigruation 当前类是一个配置类
@CompoentScan 注解扫描路径
@PropertySource 引入外部资源文件
@Bean该方法返回值注入IoC容器
@Value 资源文件里的值
@Import 引入其它配置类
@Lazy 配置延迟加载
文章内容输出来源:拉勾教育Java高薪训练营;