Spring ioc及aop思想

 

Spring主要是由iocaop组成,ioc控制反转在平时的java应用开发中,我们要实现某一个功能或者说是完成某个业务逻辑时至少需要两个或以上的对象来协作完成,在没有使用Spring的时候,每个对象在需要使用他的合作对象时,自己均要使用像new object() 这样的语法来将合作对象创建出来,这个合作对象是由自己主动创建出来的,创建合作对象的主动权在自己手上,自己需要哪个合作对象,就主动去创建,创建合作对象的主动权和创建时机是由自己把控的,而这样就会使得对象间的耦合度高了,A对象需要使用合作对象B来共同完成一件事,A要使用B,那么A就对B产生了依赖,也就是AB之间存在一种耦合关系,并且是紧密耦合在一起,而使用了Spring之后就不一样了,创建合作对象B的工作是由Spring来做的,Spring创建好B对象,然后存储到一个容器里面,当A对象需要使用B对象时,Spring就从存放对象的那个容器里面取出A要使用的那个B对象,然后交给A对象使用,至于Spring是如何创建那个对象,以及什么时候创建好对象的,A对象不需要关心这些细节问题(你是什么时候生的,怎么生出来的我可不关心,能帮我干活就行)A得到Spring给我们的对象之后,两个人一起协作完成要完成的工作即可。

  所以控制反转IoC(Inversion of Control)是说创建对象的控制权进行转移,以前创建对象的主动权和创建时机是由自己把控的,而现在这种权力转移到第三方,比如转移交给了IoC容器,它就是一个专门用来创建对象的工厂,你要什么对象,它就给你什么对象,有了 IoC容器,依赖关系就变了,原先的依赖关系就没了,它们都依赖IoC容器了,通过IoC容器来建立它们之间的关系。

这是我对SpringIoC(控制反转)的理解。DI(依赖注入)其实就是IOC的另外一种说法,DI是由Martin Fowler 2004年初的一篇论文中首次提出的。他总结:控制的什么被反转了?就是:获得依赖对象的方式反转了。

AOP切面编程,主要是将我们共用的一些方法给切出来,然后在需要的地方调用,比如最常见的就是日志,日志的话用的就是aop切面编程的思想,先用日志来说如图:配置xml配置的话很简单就是我们切出去的类进行配置。

 

这个是在代码中的应用!注:(这是日志的,当然现在有了很多简单方便的jar包或插件,比如lombok这个jar,你引用了这个jar的话里面有一个@Slf4j注解使用这个注解的话就不用如上图一样了,只需要log.debug log.info 即可)。

下图是一非常简单的一个aop的实现,估计大家上学的时候都写过,不清楚的话百度一下有代码的:

 

原文地址:https://www.cnblogs.com/boyliuc/p/7145460.html