我的理解是,spring核心是IoC,同时也实现了AOP。
IoC是利用反射机制,管理对象的创建和属性赋值的一个工厂,也就是由spring容器来管理对象的创建以及将对象的依赖传递进来,换句话说就是完成对象的实例化,并给这个对象的属性赋值。这个过程对于程序员来讲是透明的,对于程序员来讲,就是在配置文件中定义bean,并且为bean的属性赋值。
与jndi相比,jndi是用户(程序员)从容器中根据jndi名称查找依赖,而ioc是容器在对象初始化的时候不等对象请求就将依赖主动传递给它。
AOP是面向方面编程。我们采用面向对象的思想,对实体和业务逻辑进行了封装,得到具有属性和方法的对象。Aop中,方面的意思是,在业务处理中,在一个或多个业务模块中会遇到共同的非业务性的功能需求,比如,记录日志、事务管理、权限验证等,这些需求就叫做方面。
AOP就是对这些方面进行提取,使得这些操作与需求的业务分离,而利用AOP(利用代理技术和反射)将贯穿在各个模块中的横切关注点(上文中的方面)自动耦合到各个业务对象中。
Spring提供了AOP的支持,实现方式是在配置文件中配置即可。关键字是advisor和advice,我用的最多的是事务管理。