IOC
首先想说说IoC(Inversion of Control,控制倒转)。这是spring的核心,贯穿始终。
Spring所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。
IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖 Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的。那么DI是如何实现的呢? Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的。
概念:IoC (Inverse of Control,控制反转),是指类A中有一个类B的对象,本来需要开发者在类A中初始化这个对象的,现在经过配置,spring可以自动地完成类A中的类B对象的初始化。这个过程也可以被叫作DI (Depend Injection,依赖注入),因为B类对象依赖于A类,通过spring 类B变量被注入到了A类的对象中。
作用(好处):配置灵活。 IOC模式,系统中通过引入实现了IOC模式的IOC容器,即可由IOC容器来管理对象的生命周期、依赖关系等,从而使得应用程序的配置和依赖性规范与实 际的应用程序代码分开。其中一个特点就是通过文本的配件文件进行应用程序组件间相互关系的配置,而不用重新修改并编译具体的代码。 因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是现实于某种接口的),只要修改XML就可以了。虽然说修改XML后不需要重新编译java代码,但XML经常与java源代码一起打包。所有想要修改XML的话,还是需要重新打包,还是免不了重新发布。就算修改java代码,重新编译这些修改后的代码,也不是太麻烦。那使用IOC模式最本质的好处是什么呢?有一种说法是,写大型程序的时候,会用到很多其他人开发的java类。当程序员甲用到程序员乙开发的java类A时,如果使用IOC,在程序员乙写好XML配置文件后,程序员甲就不需要关心类A应如果初始化的问题,直接使用即可。IOC有利于在多人开发大型程序中提高开发效率。
实现原理:java的反射机制。
AOP
概念:AOP (Aspect Oriented Programming,面向切面编程),是指通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,是对面向对象思维方式的有力补充。我的理解中,可以做个形象的类比:甲要去办一件事情1,需要经过ABCD...流程。但这时,在B步聚前,被叫去先办了另一件事情2,完成之后又回来继续完成事情1的剩余步骤。被打断先去完成另一件事情,这个可以类比为AOP。AOP通过被管理记录日志、记录函数执行时间、事务管理等与进行数据处理主干无关的功能上。
作用(好处):AOP应用到项目中的好处,能够将与业务逻辑不相关的代码(如:日志、权限等)分离出来,减小相关业务类负担,并能让一些通用需求(如:事务)得到更广泛的复用。可以动态的添加和删除在切面上的逻辑而不影响原来的执行代码。
实现原理:通过Java的动态代理来创建AOP代理。Spring 中 AOP 代理由 Spring 的 IoC 容器负责生成、管理,其依赖关系也由 IoC 容器负责管理。因此,AOP 代理可以直接使用容器中的其他 Bean 实例作为目标。
相关推荐
Spring IOC AOP学习示例代码,包含Spring常用操作示例和所有所需jar文件。参考博客:http://blog.csdn.net/daijin888888/article/details/51735291
在Spring框架中,依赖注入(Inversion of Control, IoC)和面向切面编程(Aspect Oriented Programming, AOP)是两大核心特性。本篇将深入探讨如何通过注解方式来模拟Spring的这两种机制,帮助你理解其底层原理。 #...
例如,`SpringIOC`目录中的配置文件(如`applicationContext.xml`)用于定义bean的定义和它们之间的依赖关系。通过XML或注解方式声明bean,Spring可以自动管理bean的实例化、初始化和销毁,从而简化了代码并提高了可...
Spring框架是Java开发中不可或缺的一部分,它通过IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)两大核心特性,极大地简化了应用程序的构建和维护。在这个名为"spring ...
Spring框架是Java开发中不可或缺的一部分,它通过提供两种核心特性——控制反转(IoC)和面向切面编程(AOP)来简化应用的构建。理解并掌握这两种技术对于任何Java开发者来说都至关重要。 **控制反转(IoC)**,也...
Spring 框架是Java开发中的一个核心框架,它提供了两个关键特性:Inversion of Control(IoC,控制反转)和Aspect Oriented Programming(AOP,面向切面编程)。这两个特性极大地简化了软件开发,提高了代码的可维护...
所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。这是什么意思呢,举个简单的例子,我们是如何找女朋友的?常见的情况是,我们到处去看哪里有长得漂亮身材又好的mm,然后打听...
Spring框架是Java开发中最常用的轻量级框架之一,它的核心组件包括IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。这些jar包是实现Spring IOC和AOP功能的基础,下面将...
1,spring是一个开源的免费的框架(容器)。 2,spring是一个轻量级的,非入侵式的框架。 非入侵式:就是项目引入了这个框架之后,...总结:spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。
在本文中,我们将深入探讨如何模拟实现Spring框架中的两个核心特性:Inversion of Control(IoC,控制反转)和Aspect-Oriented Programming(AOP,面向切面编程)。这两个概念在现代Java应用开发中占据着重要的地位...
Spring框架是Java开发中不可或缺的一部分,它为开发者提供了强大的依赖注入(IOC)和面向切面编程(AOP)功能,以及用于构建Web应用程序的MVC框架。Spring Boot则是基于Spring框架构建的应用程序启动器,旨在简化...
Spring 框架是Java开发中的核心框架,它主要由两个关键部分组成:IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。这两个概念是Spring框架的核心特性,极大地简化了企业...
一个机遇Spring3的入门小案例,里面主要简单演示了Spirng配置文件如何配置自动扫描包,控制类、服务类、Dao类如何加注解,被IOC扫描装入容器中。还有AOP例子的演示,有before after afterreturn afterthrow,还有...
本章主要探讨Spring的两个核心概念:控制反转(IOC)和面向切面编程(AOP),以及Spring框架的组成。 首先,Spring的核心是控制反转(IOC),这是一种设计原则,它改变了传统的对象创建和依赖关系管理方式。在传统...
spring version: 5.0.0; jdk: 1.8 IOC大致调用顺序(IOC调用的AOP标签解析)
Spring的核心特性包括依赖注入(Inversion of Control, IoC)和面向切面编程(Aspect-Oriented Programming, AOP)。这两个概念是Spring框架的重要支柱,极大地简化了代码的管理和维护。 **依赖注入(IOC)** 依赖...
Spring 框架是Java开发中的一个核心框架,它为应用程序提供了一个全面的基础设施,包括 inversion of control (IoC) 和 aspect-oriented programming (AOP)。这两个概念在Spring框架中扮演着至关重要的角色。 首先...