首页 > 编程知识 正文

spring aop原理面试,spring aop理解

时间:2023-05-04 13:44:24 阅读:20651 作者:127

理解spring1) spring是一个轻量级的J2EE框架,是一个容器框架,用于容纳java对象,是一个中间层框架,可以起到连接的作用。 2 )帮助开发人员管理java对象的放置和生命周期。能实现模块之间,类和类之间的解耦合。3 )核心技术为ioc ) )控制反转) ) )。 面向切割编程(aop )ioc1 )在部署IOC容器之前,如果在一个对象运行过程中需要另一个对象,则必须自己创建该对象。控制权都在自己手中。 引入IOC容器后,两个对象之间不再有直接联系。 当一个对象运行到需要另一个对象时,IOC容器会主动创建该对象,并将其注入到所需的位置。 创建对象的控制权转移到非代码容器,容器而不是开发人员管理对象、创建对象并为属性赋值。 因此,两个对象的从属关系变为被动,由容器管理,控制权逆转,因此称为控制逆转目的。 也可以减少对代码的更改,实现不同的功能。 33558www.Sina.com/(2(两个对象之间的直接联系消失,根据需要创建ioc容器)2) spring容器是ioc容器,并且实质上是许多Map。 其中包含各种对象,有些在xml中定义,有些在容器中注册了我们添加的注释,有些在默认情况下在容器中注册了环境,等等,Spring容器在启动时使用反射打开3 ) di )依赖注入)是ioc的具体实现。 ioc容器创建被调用方实例并将其注入调用方。 项目启动时,id注入将扫描XML bean的ref属性,同时也扫描Autowired或Resource注释。 根据类型或id注入,id是对象名称aop

1 )1) ) ) )。

面向切割的编程可以在不影响原始功能的情况下进行扩展,这就是方法的加强。

2 )

例如,如果对某些对象的功能执行相同的功能扩展,则这些功能不适合写在类中,而不是业务代码中。 另外,每班写的话代码的重复会变多。 aop将扩展封装在一个切片中,根据要执行切片的位置和时间,在执行所需方法时执行切片方法,扩展原始功能,从而降低模块之间的耦合度,提高系统的可维护性

3 )3) ) )。

springaop基于动态代理,是动态代理的规范化,定义了动态代理的实现步骤、方式,使开发人员能够以统一的方式使用动态代理。

aop实现基于代理模型,主要分为静态代理和动态代理。 静态代理的代表是AspectJ; 动态代理以Spring AOP为代表。

AspectJ是静态代理的扩展,也称为编译时扩展,因为它在编译阶段生成AOP代理类,将片组织到Java字节码中,并在运行时扩展AOP对象。

Spring AOP使用的动态代理在程序运行时使用反射机制动态创建代理对象。 无需手动编写代码,AOP框架是一种不修改字节码,在特定接点进行扩展处理,并回调原始对象的方法。

动态代理主要有两种方法: JDK动态代理和CGLIB动态代理

jdk动态代理:只为实现接口的类生成代理,如果没有实现接口,则无法完成动态代理

创建SomeServiceImpl接口以实现目标类,并在其doSome、doother中增加输出时间、事务。

2 .创建InvocationHandler接口的实现类,以将功能添加到目标方法中。

3 .使用JDK的Proxy类创建代理对象并执行方法。

CGLib是类实现代理,它通过在运行时动态生成指定类的子类对象、覆盖其中的特定方法以及添加扩展代码来实现AOP

1 .目标类不实现接口

如何创建CglibProxy类、实现方法拦截器接口和实现接口

效率: 1.8或更高版本的jdk代理高于cglib代理

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。