面试题,说说你对spring IOC和AOP的理解

面试题,说说你对spring IOC和AOP的理解https://blog.csdn.net/s20081294/article/details/44677387在面试中,经常会问,说说你对springIOC和AOP的理解,问题很宽泛,似乎不知道从何说起。回答思路:1.先用通俗易懂的话解释下何为IOC和AOP———》2.各自的实现原理———–》3.自己的项目中如何使用以下是个人的一些总结,仅供参考。1.IOC…

大家好,又见面了,我是你们的朋友全栈君。

https://blog.csdn.net/s20081294/article/details/44677387

在面试中,经常会问,说说你对spring IOC和AOP的理解,问题很宽泛,似乎不知道从何说起。

回答思路:1.先用通俗易懂的话解释下何为IOC和AOP———》2.各自的实现原理———–》3.自己的项目中如何使用

以下是个人的一些总结,仅供参考。

1.IOC

许多应用都是通过彼此间的相互合作来实现业务逻辑的,如类A要调用类B的方法,以前我们都是在类A中,通过自身new一个类B,然后在调用类B的方法,现在我们把new类B的事情交给spring来做,在我们调用的时候,容器会为我们实例化。

2. IOC容器的初始化过程

     资源定位,即定义bean的xml——-》载入——–》IOC容器注册,注册beanDefinition

    IOC容器的初始化过程,一般不包含bean的依赖注入的实现,在spring IOC设计中,bean的注册和依赖注入是两个过程,,依赖注入一般发生在应用第一次索取bean的时候,但是也可以在xm中配置,在容器初始化的时候,这个bean就完成了初始化。

3. 三种注入方式:构造方法注入,setter注入,基于注解的注入。我们常用的是基于注解的注入

4. bean是如何创建—  工厂模式

5. 数据是如何注入——-反射

6.AOP

        面向切面编程,在我们的应用中,经常需要做一些事情,但是这些事情与核心业务无关,比如,要记录所有update*方法的执行时间时间,操作人等等信息,记录到日志,

通过spring的AOP技术,就可以在不修改update*的代码的情况下完成该需求。

7.AOP的实现原理——代理

       

以下文章本人觉得可以很好地回答前两个问题,特此转载供读者参考:

http://blog.csdn.net/it_man/article/details/4402245     IOC的定义及实现原理—反射

http://www.cnblogs.com/yanbincn/archive/2012/06/01/2530377.html AOP的定义实现原理—代理

http://outofmemory.cn/code-snippet/3762/Spring-AOP-learn-example     AOP的应用的三种实现方式

总结:

IOC:控制反转也叫依赖注入,IOC利用java反射机制,AOP利用代理模式。所谓控制反转是指,本来被调用者的实例是有调用者来创建的,这样的缺点是耦合性太强,IOC则是统一交给spring来管理创建,将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean的类。
AOP:面向切面编程。(Aspect-Oriented Programming)
AOP可以说是对OOP的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码,属于静态代理

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149261.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Tomcat使用IDEA远程Debug调试[通俗易懂]

    Tomcat使用IDEA远程Debug调试[通俗易懂]Tomcat运行环境:CentOS6.5、Tomcat7.0、IDEA远程Tomcat设置1、在tomcat/bin下的catalina.sh上边添加下边的一段设置CATALINA_OPTS=”-Xdebug-Xrunjdwp:transport=dt_socket,address=60222,suspend=n,server=y”2、address=60222这个是后边IDEA设置的时候需要

    2022年9月10日
    0
  • WebGPU 初探 – Windows10上Chorme运行WebGPU程序

    WebGPU 初探 – Windows10上Chorme运行WebGPU程序WebGPU 是最新的 Web3D 图形 API 浏览器封装了现代图形 API Dx12 Vulkan Metal 这才是未来的标准 不像 WebGL2 0 苹果直接不支持 好 开始今天的分享 点击链接查看是否支持 WebGPU 首先分享链接 W3CWebGPU 组织 WebGPU 目前的进展可以查看 WebGPU 最新的进展和平台支持情况 WebGPU 文档 WebGPU 的官方介绍 说明比较详细 Web

    2025年7月2日
    0
  • dell服务器服务器数据丢失后,数据恢复

    dell服务器服务器数据丢失后,数据恢复dell服务器数据丢失后,一般情况下数据都是可以100%恢复的,因此切记勿对服务器硬盘调换顺序,强制上线,重组等任何危险操作,否则将有可能对原有数据造成二次破坏,永久性不可恢复。 DELL服务器主要有:塔式服务器,刀片式服务器,机架式服务器等几种产品系列。  一:戴尔DELL服务器数据恢复常见故障现象:  1:戴尔DELL服务器磁盘阵列信息丢失,造成整台服务器无法启动;  2:戴尔

    2022年6月29日
    28
  • 如何面对大容量的数据存储问题_最安全的数据存储方式

    如何面对大容量的数据存储问题_最安全的数据存储方式公司在高速发展中,总会遇到各种各样的网络问题,今天笔者和大家分享一个“公司网站存储需求”的实际案例。 案例背景客户公司网站的存储需求越来越大,已有NAS存储服务器的空间不能满足业务日趋增长的需求,此时网站面临如下问题: 网站存储扩容需要另行申请采购和做规划采购,需要一定周期才能使用,无法解决燃眉之急; 网站的视频资源访问速度慢; 已有存储NAS存储使用时间长,…

    2022年10月6日
    0
  • floor报错注入原理_sql报错注入

    floor报错注入原理_sql报错注入floor()报错注入准确地说应该是floor,count,groupby冲突报错是当这三个函数在特定情况一起使用产生的错误。首先看经典的floor注入语句:andselect1from(selectcount(*),concat(database(),floor(rand(0)*2))xfrominformation_schema.tablesgroupbyx)a)第一眼看…

    2022年9月27日
    0
  • 永恒之蓝病毒端口_openwrt安全性

    永恒之蓝病毒端口_openwrt安全性1.使用shadowbroker的eternalblue还有doublepulsar实现注入到目标机器的进程,然后使用kali下的msf获取到有病毒机器的shell然后修改密码查看问题等.根据网上的教程来进行处理以及复现等教程地址:http://blog.csdn.net/claygrit/article/details/77284739http://blo…

    2022年10月16日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号