【Java面试】Spring中的IOC和AOP

news/2024/11/28 11:39:42/

IOC/DI

IOC:控制反转也叫依赖注入。利用了工厂模式
将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean的类(假设这个类名是A),分配的方法就是调用A的setter方法来注入,而不需要你在A里面new这些bean了。

在传统的程序设计中,当调用者需要被调用者的协助时,通常由调用者来创建被调用者的实例。但在spring里创建被调用者的工作不再由调用者来完成,因此控制反转(IoC);创建被调用者实例的工作通常由spring容器来完成,然后注入调用者,因此也被称为依赖注入(DI),依赖注入和控制反转是同一个概念。

AOP

AOP:面向切面编程。(Aspect-Oriented Programming)
AOP就是典型的代理模式的体现。
代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。
AOP可以说是对OOP的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。
也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。
而AOP则将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。
实现AOP的技术,主要分为两大类:
一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;
二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码.
简单点解释,比方说你想在你的biz层所有类中都加上一个打印‘你好’的功能,这时就可以用aop思想来做.
你先写个类写个类方法,方法经实现打印‘你好’,然后Ioc这个类 ref=“biz.*”让每个类都注入即可实现。


http://www.ppmy.cn/news/409287.html

相关文章

<Linux开发>驱动开发 -之-阻塞、非阻塞IO和异步通知

<Linux开发>驱动开发 -之-阻塞、非阻塞IO和异步通知 交叉编译环境搭建: <Linux开发> linux开发工具-之-交叉编译环境搭建 uboot移植可参考以下: <Linux开发> -之-系统移植 uboot移…

Vue繁体简体转换

https://github.com/nk2028/opencc-js/blob/main/README-zh-CN.md

webstorm搜狗输入法变成繁体字

webstorm 搜狗输入法,输入汉字都变成繁体字了,在其他编辑器都没事 原因: 无意之间按了 Ctrl Shift F 解决方案 : 再按一次 Ctrl Shift F

eclipse中输入中文为繁体

今天不小心在java编辑的时候发现eclipse中输入出来的是繁体! 百思不得其解之后发现了问题!是我的输入法和java中的快捷键进行了冲突。ctrlshiftF 这个快捷方式和搜狗中的繁体是一样的! 当然还有其他的类似情况! 个人建议&#xff…

Windows10 微软输入法突然变成繁体输入

我的原因是不小心触发到系统的默认热键了 解决方法:输入法右键设置-按键

vscode中输入的中文变繁体的问题

请按下列步骤重新设置一下: 1.按快捷键“CtrlShiftP”. 2. 在“vscode”顶部会出现一个搜索框. 3. 在搜索框中输入“configure Display language”,然后回车 4. 选中后将“zh-cn”这一选项选中,回车 5. 选中之后会提醒重启编译器 6. 选择…

QT Creator 输入中文变繁体的解决方法

出现原因: 系统中文输入法默认成为了繁体中文 解决方法: ctrl shift f 使用上面三个组合键,按一次切换成简体,再按一次成繁体...

idea中输入中文变成繁体字

问题: idea中输入中文变成繁体字 原因: idea中快捷键与输入法快捷键冲突:crtlshiftf 解决: 修改输入法的简繁切换快捷键的设置,crtlshiftf切换回简体输入方式