SpringIOC的解释
IOC(控制反转)就是依赖倒置原则的一种代码设计思路,就是把原先在代码里面需要实现的对象创建、对象之间的依赖、反转给容器来帮忙实现
SpringIOC 容器通过XML,注解等其他方式配置其他方式类以及类之间的依赖关系,完成了对象的创建和依赖的管理注入。实现IOC的主要设计模式是工厂模式。
这句话的意思是:
IOC控制反转的含义,它是把Java面向对象的创建的过程,交给容器来进行管理一种机制。
它的实现方式,是通过XM,获取注解,配置类的方式实现类和类之间的依赖关系。
来完成的对象的创建和依赖管理的注入。
SpringIOC的设计初衷是什么?
集中管理,实现类的可配置和易管理
减低类与类之间的耦合度,实现Java高内聚低耦合的设计思想
同时可提升Java应用程序的性能,减轻JVM的内存压力
SpringIOC的核心概念
其实本质是通过:Java语言衍生出来的框架和项目产品,只不过开源出来。
使用spring最大的感受就是:很少使用new对象或者很少实例化对象
核心:创建对象,注入对象,控制对象等,一句话:springioc管理对象的整个生命周期。
总结:
面试题:谈谈你对SpringIOC的理解和认识是什么?
答:首先Spring框架是通过JAVA语言开发出来的一个框架或者一个项目产品。我们Java的最大的特点是:面向对象,在没有使用Spring框架的时候,我们要调用类中的方法或者给属性赋值,都是通过new去实例化对象,使用Spring框架以后,它内部提供IOC机制,也就是控制反转的含义,它的核心基础是:把对象创建的过程交由容器(Map)来进行管理一种机制,我们会把通过容器来管理对象的方式,将传统的创建更换成交由容器管理对象的过程称之为IOC控制反转的过程。总之如果要实现对象交由Spring的IOC来管理话,就必须遵循Spring提供的规范,而这些规范在传统spring开发中,是通过xml的方式来进行注入和管理的bean到容器中,现在主流的方式都是采用注解的方式进行的管理和控制bean到容器中,现在主流的方式都是采用注解的方式来进行管理和控制bean到容器中等
这样做的好处是:
集中管理,实现类的可配置和易管理。
降低了类与类之间的耦合度。实现Java高内聚低耦合的设计思想。
同时可以提升Java应用程序的性能,减轻JVM的内存压力。
AOP
面向切面编程,是一种抽象化的面向对象编程,对面向对象编程的补充,
打印日志业务代码和打印日志耦合起来
计算器方法中,日志和业务混合在一起,aop要做的就是将日志代码全部抽象出去统一进行处理,计算器方法中只保留核心的业务代码。
做到核心业务和非业务代码的解耦合。
- 创建切面类
- 实现类添加@Component注解
- 配置自动扫包,开启带自动生成代理对象
切面类:
谷歌大牛甚至直言:“对于Java开发者,学习Java就是在学Spring。”本篇内容分享Spring IOC以及Spring AOP的学习笔记,=将分成4个部分跟大家分享,请认真看完本文,对你工作一定大有帮助
Part1 SpringIOC
学习Spring最重要的无非是Spring IOC以及Spring AOP,首先咱们把Spring IOC吃透,以下内容将截图展示。
Spring IOC主要学习内容分为以下7点:
①Spring框架
②Spring lOC容器Bean对象实例化模拟实现
③Spring IOC容器Bean对象实例化
④Spring lOC配置文件加载
⑤Bean的作用域和生命周期
⑥Spring IOC扫描器
⑦Spring IOC注入
Part2 SpringAOP核心组件分析
Part 3SpringAOP IOC源码分析
部分内容展示:
Spring事务原理:
什么是BPP?
AOP全面回顾:
Part 4 看过都NB的Spring源码笔记
Spirng源码笔记无非也是就是对IOC和AOP进行更加底层的分析,笔记内容我将分成四个部分,将通过案例来分析并手写实现IOC和AOP,不多BB,一起学习吧,
- 吃透Spring核心思想IOC和AOP
- 自定义Spring框架(手写实现IOC和AOP)
- Spring IOC高级应用以及源码深度剖析
- Spring AOP高级应用以及源码深度剖析
①什么叫IOC、AOP;它们能解决什么问题?IOC和DI的区别是什么?AOP为什么叫做面向对象编程?
②理解了Spring的核心思想后,先略过Spring是如何实现这两个思想的,通过案例来分析代码,并用现有知识解决痛点,从而一步步分析并手写实现IOC和AOP。
③分析Spring IOC高级应用,基础必不可少,像BeanFactory与ApplicationContext区别,纯xml模式,纯注解模式,xml与注解相结合模式你总得吃透。然后再理解lazy-Init 延迟加载,FactoryBean 和 BeanFactory,BeanPostProcessor,BeanFactoryPostProcessor。最后就是学习Spring IOC源码了。
④学习Spring AOP高级应用以及源码,整体上也和学习IOC差不多,我就不过多赘述了。
最后
作为一名 Java 开发,对 Spring 框架是再熟悉不过的了。Spring 支持的控制反转(Inversion of Control,缩写为IoC)和面向切面编程(Aspect-oriented programming,缩写为AOP)早已成为我们的开发习惯,仿佛 Java 开发天生就该如此。人总是会忽略习以为常的事物,所有人都熟练使用 IoC 和 AOP,却鲜有人说得清楚到底为什么要用 IoC 和 AOP。
技术肯定是为了解决某个问题而诞生,要弄清楚为什么使用 IoC 和 AOP,就得先弄清楚不用它们会碰到什么问题。