Spring面试Ioc和Aop问题总结
一、什么是Ioc?
Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。
1.1、控制是什么?
传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建。
1.2、为何是反转,哪些方面反转了?
反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。
二、Ioc能做什么?
IoC不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。
其实IoC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动的
Spring面试Ioc和Aop问题总结相关推荐
- Spring中IOC和AOP的详细解释(转)
原文链接:Spring中IOC和AOP的详细解释 我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂 ...
- Spring:IOC和AOP
Spring:IOC和AOP 一. IOC (1) 引入 (2) 定义 (3) 作用 (4) 实现 (5) DI依赖注入 二. AOP (1) 概念 (2) Spring中的AOP (3) 入门案例 ...
- Spring中IOC和AOP的详细解释
我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂模式和代理模式. IOC就是典型的工厂模式,通过s ...
- 彻底学会Spring的IOC和AOP——理论+实操
目录 1 IOC 1.1 概念 1.2 底层原理 1.3 IOC容器 1.4 Bean管理:基于xml配置文件实现 1.5 两种类型的Bean 1.6 Bean的作用域 1.7 Bean的生命周期 1 ...
- Java 第一大框架:Spring 的 IoC 跟 AOP 雏形如何实现?
Spring Spring make java more simple: Spring make java more modern: Spring make java more reactive: S ...
- Spring框架(IoC、AOP面向接口切面)
新建一个Maven工程 Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务器端的开发. ...
- 初学者快速了解spring的IOC和AOP原理
spring框架概述 1.spring是轻量级的开源的javaEE框架 2.spring可以解决企业应用开发的复杂性 3.spring有两个核心部分:IOC和AOP (1)IOC:控制反转,把创建对象 ...
- spring中IoC和AOP的实现
6.2 spring IoC IoC容器是Spring的核心.容器从配置文件中读取需要创建哪些对象,并在创建后按照要求把它们进行装配,通过这样的方法达到业务代码解耦的目的.不仅如此,spring还负责 ...
- Spring的IOC和AOP思想
Spring框架的两大核心(ioc和aop) 一.ioc:控制反转(Inversion of Control)思想 1.1.由spring来负责控制对象的生命周期和对象间的关系(SSM框架中的依赖关系 ...
最新文章
- 【错误记录】未安装该应用 ( 在 Android 12 之后 组件设置 android:exported=“false“ 属性 )
- 托管与非托管的混合编程问题
- 【Codeforces #130 Div2】Solutions
- Linux下设计一个简单的线程池
- 解决(Missing artifact com.oracle:ojdbc14:jar:11.2.0.4.0)
- [2018.03.14 T1] 矩阵(matrix)
- android投屏功能开发,Android DLNA投屏-基于CyberGarage开发投屏功能
- TMS320F2837x开发例程使用手册(3)
- 输入圆半径 计算 直径 周长 面积
- mysql批量插入on duplicate key update
- Maven的jar包无法导入/彻底解决unable to find valid certification path to requested target
- vue2中watch的使用
- 实验3 STP简单配置及介绍
- RandLA-Net复现S3DIS记录
- Centos7创建DNS服务器(超级简单,一看就会)
- 格式化输出的三种方式
- pythonmacd指标编写_利用python编写macd、kdj、rsi、ma等指标 -
- (信贷风控九)行为评分卡模型python实现(详细代码+注释+讲解)
- 自动控制原理复习——线性系统的根轨迹法
- 微信小程序富文本中图片溢出,使用max-width无效