描述spring ioc和spring aop技术,Spring框架IoC与AOP的实现关系-

  描述spring ioc和spring aop技术,Spring框架IoC与AOP的实现关系?

  如何解决写爬虫IP受阻的问题?立即使用。

  SpringIOC和AOP原理详解

  IoC(Inversion of Control)

  (1).IoC(控制反转)是指容器控制程序对象之间的关系,而不是传统实现中由程序代码直接控制。控制权从应用程序代码转移到外部容器,控制权的转移称为反转。对于Spring来说,是Spring控制着对象的生命周期和对象之间的关系;IoC还有一个名字,3354“依赖注入”。从名字上看,所谓依赖注入是指组件之间的依赖关系是由容器在运行时决定的,即容器动态地向组件注入一些依赖关系。

  (2).按照spring的工作方式,所有的类都会在spring容器中注册,告诉spring它是什么,你需要什么。然后在系统运行正常的时候,Spring会主动给你想要的东西,把你交给同时需要你的其他东西。所有类的创建和销毁都由spring控制,也就是说,控制对象生命周期的不再是引用它的对象,而是spring。对于一个特定的对象,以前是控制其他对象,现在所有对象都被spring控制,所以这叫控制反转。

  (3)系统运行时,动态地向一个对象提供它所需要的其他对象。

  (4).依赖注入的思想是通过反射机制实现的。在实例化一个类时,它通过在类中反射set方法,将事先保存在HashMap中的类属性注入到类中。综上所述,在传统的对象创建方法中,通常是调用者创建被调用者的实例,而Spring中创建被调用者的工作是由Spring完成的,然后注入调用者,这就是所谓的依赖注入或反转控制。注入方式有两种:依赖注入和集合注入;IoC的优点:减少了组件之间的耦合,降低了替换业务对象的复杂性,使It能够灵活地管理对象。

  AOP(Aspect Oriented Programming)

  (1).AOP面向方面编程基于IoC,是OOP的有益补充;

  (2).AOP使用一种叫做“横切”的技术来拆分封装对象的内部,将那些影响多个类的公共行为封装成一个可复用的模块,命名为“方面”,也就是Aspect。所谓“方面”,简单来说就是将与业务无关,但被业务模块一起调用的逻辑或职责封装起来,比如日志,以减少系统的重复代码,降低模块之间的耦合度,方便以后的可操作性和可维护性。

  (3).AOP代表一种横向关系,把“对象”比作一个空心圆柱体,封装了对象的属性和行为;面向方面编程的方法是将圆柱体切割成节的形式,有选择地提供业务逻辑。而切面,也就是所谓的“方面”。然后,它用巧妙的双手还原了这些被剪切的部分,不留痕迹,却完成了效果。

  (4)实现AOP的技术主要分为两类:一类是利用动态代理技术,通过截取消息来修饰消息,从而代替原来对象行为的执行;二是通过静态编织,引入特定语法来创建“方面”,这样编译器在编译时就可以编织关于“方面”的代码。

  (5).Spring实现AOP:JDK动态代理和CGLIB代理JDK动态代理:其代理对象必须是一个接口的实现,通过在运行时创建该接口的实现类来完成对目标对象的代理;它的两个核心类是InvocationHandler和Proxy。CGLIB代理:实现原理类似于JDK动态代理,只是运行时生成的代理对象是目标类扩展的子类。CGLIB是一个高效的代码生成包,它的底层是通过ASM(开源java字节码编辑类库)操作字节码实现的,比JDK有更好的性能。需要引入包asm.jar和cglib.jar。实际上,使用AspectJ注入式刻面和@AspectJ注释驱动式刻面,底层也是通过动态代理实现的。

  (6).AOP使用场景:

  身份验证权限检查

  高速缓存

  上下文传递内容交付

  错误处理错误处理

  延迟装载

  调试调试

  记录、跟踪、分析和监控、记录、跟踪、优化和校准

  性能优化性能优化,效率检查

  持久性持久性

  资源库资源库

  同步同步

  交易交易管理

  另外,Filter的实现和struts2拦截器的实现都是AOP的体现。

  以上是Spring IoC和AOP原理详解的详细内容。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: