Spring主要是由ioc和aop组成,ioc控制反转在平时的java应用开发中,咱们要实现某一个功能或者说是完成某个业务逻辑时至少须要两个或以上的对象来协做完成,在没有使用Spring的时候,每一个对象在须要使用他的合做对象时,本身均要使用像new object() 这样的语法来将合做对象建立出来,这个合做对象是由本身主动建立出来的,建立合做对象的主动权在本身手上,本身须要哪一个合做对象,就主动去建立,建立合做对象的主动权和建立时机是由本身把控的,而这样就会使得对象间的耦合度高了,A对象须要使用合做对象B来共同完成一件事,A要使用B,那么A就对B产生了依赖,也就是A和B之间存在一种耦合关系,而且是紧密耦合在一块儿,而使用了Spring以后就不同了,建立合做对象B的工做是由Spring来作的,Spring建立好B对象,而后存储到一个容器里面,当A对象须要使用B对象时,Spring就从存放对象的那个容器里面取出A要使用的那个B对象,而后交给A对象使用,至于Spring是如何建立那个对象,以及何时建立好对象的,A对象不须要关心这些细节问题(你是何时生的,怎么生出来的我可不关心,能帮我干活就行),A获得Spring给咱们的对象以后,两我的一块儿协做完成要完成的工做便可。java
因此控制反转IoC(Inversion of Control)是说建立对象的控制权进行转移,之前建立对象的主动权和建立时机是由本身把控的,而如今这种权力转移到第三方,好比转移交给了IoC容器,它就是一个专门用来建立对象的工厂,你要什么对象,它就给你什么对象,有了 IoC容器,依赖关系就变了,原先的依赖关系就没了,它们都依赖IoC容器了,经过IoC容器来创建它们之间的关系。编程
这是我对Spring的IoC(控制反转)的理解。DI(依赖注入)其实就是IOC的另一种说法,DI是由Martin Fowler 在2004年初的一篇论文中首次提出的。他总结:控制的什么被反转了?就是:得到依赖对象的方式反转了。spa
AOP切面编程,主要是将咱们共用的一些方法给切出来,而后在须要的地方调用,好比最多见的就是日志,日志的话用的就是aop切面编程的思想,先用日志来讲如图:配置xml配置的话很简单就是咱们切出去的类进行配置。插件
这个是在代码中的应用!注:(这是日志的,固然如今有了不少简单方便的jar包或插件,好比lombok这个jar,你引用了这个jar的话里面有一个@Slf4j注解使用这个注解的话就不用如上图同样了,只须要log.debug 或log.info 便可)。debug
下图是一很是简单的一个aop的实现,估计你们上学的时候都写过,不清楚的话百度一下有代码的:日志