长春商城网站开发,wordpress 数据库搜索,宣传片制作公司业务,上海鹭城建设集团网站我之前面试的时候#xff0c;真的会有面试官问这个。我感觉确实这个比较高频#xff0c;因为 Spring 框架最核心的就是这两个东西嘛#xff0c;掌握了这两个就相当于掌握了 Spring 的半壁江山了。
不过一般面试官不会一上来就问你什么是 AOP 和 IOC#xff0c;一般都是叫你…我之前面试的时候真的会有面试官问这个。我感觉确实这个比较高频因为 Spring 框架最核心的就是这两个东西嘛掌握了这两个就相当于掌握了 Spring 的半壁江山了。
不过一般面试官不会一上来就问你什么是 AOP 和 IOC一般都是叫你谈谈 Spring这时候你就可以从这两个东西去谈了。之前对于这个题目我回答的不算好所以今天花时间整理了一下应该如何回答。
IOC 就是控制反转其实本来是程序员自己再代码中new对象的现在交给Spring的IOC容器去创建了。对象的创建这样一个行为从程序员反转到了IOC容器。事实上IOC只是一种思想而已这种思想是通过依赖注入实现的。
我们知道每个类中都有很多个对象而每个类其实都是互相有联系的因为只有类与类之间互相有联系才可以实现更强大的功能。由于类之间互相有联系则不同类的对象很可能也是互相关联的。假如在一个类中创建一个对象A这个对象A引用了另一个类的对象B那A和B就紧耦合了。我们肯定不希望这样子写代码因为这样写出来的代码太糟糕了你一旦对其中一个对象做点啥另一个对象就要跟着动代码那这是我们不希望看到的。
而我们在做项目的时候比如controller层service层dao层这种你不会看到controllerservice层会new一个对象出来因为它们将创建对象的代码交给了Spring IOC去做了如果controller层想要用service层的功能的时候controller就会用autowired注入service层的一些对象就像打针一样注入给controller层这样controller层就会使用service层的功能了。同时因为我们将创建对象的代码放到了Spring IOC容器中controller层和service层实现了解耦这样代码的可维护性就会很强。
所以说Sping中用了依赖注入的方式实现了控制反转的思想使得不同类的对象之间能够共同完成复杂的功能的同时还保证了松耦合。 而AOP其实也是一种设计思想我的理解是在功能模块的业务代码的方法前后加上一些重复性的非代码模块比如日志/事务/安全代码 。通过AOP我们就可以在不改变业务代码的情况下对功能进行增强比如给某个功能增加事务支持安全支持之类的。