spring aop的使用存在性能上的问题吗
发布网友
发布时间:2022-05-02 06:15
我来回答
共1个回答
热心网友
时间:2022-06-28 23:33
spring AOP不是用反射实现的,而bean的创建一般是这样做的。
spring里主要通过Java动态代理接口、cglib生成子类、AspectJ这三种方式来实现AOP。
通过AOP进行声明式事务管理应该是大家用的最多的吧。像权限校验和日志记录虽然也具备一定的横切性需求,但好像很少拿spring来做,权限控制框架倒是可以考虑与spring进行集成,细粒度的日志记录则根本无法真正利用AOP来做,原因在于业务方法记录日志的位置是不统一的,从而无法确定切入点。
但spring利用AOP还是干了不少事情的,随便翻看源码你都可以发现它们的影子。举个例子,spring里有一个javax.sql.DataSource的代理类TransactionAwareDataSourceProxy,它利用java的动态代理在运行时替换了原生DataSource的getConnection等诸多方法,最重要的是它使你的遗留系统具备了与spring集成并使用spring事务管理的能力,而这一切你只需要一个简单的配置,你并不知道spring在后台为你做了这些事情。
AOP是一种很有用的编程理念,语言和工具不应成为我们程序员思想的束缚,即使项目不用spring AOP你也可以在适当的契机把spring里好的想法拿来用,甚至你觉得不好还可以改造它,这样我们才能真正成为工具的主人而不是奴仆。
为什么spring中AOP 用的很少
spring AOP不是用反射实现的,而bean的创建一般是这样做的。spring里主要通过Java动态代理接口、cglib生成子类、AspectJ这三种方式来实现AOP。通过AOP进行声明式事务管理应该是大家用的最多的吧。像权限校验和日志记录虽然也具备一定的横切性需求,但好像很少拿spring来做,权限控制框架倒是可以考虑与spring进行...
Spring源码之AOP的使用
以上代码实现了自动注册AnnotationAwareAspectJAutoProxyCreator类的功能,同时这里还设计到一个优先级的问题,假设如果已经存在了自动代理创建器,而且存在的自动代理创建器与现在的不一致,那么需要根据优先级来判断到底使用哪一个处理proxy-target-class以及expose-proxy属性 useClassProxyingIfNecessary(parserContext.getRegistry(...
深入浅出Spring AOP
性能和最佳实践是使用AOP时不可忽视的,适当优化和遵循最佳实践,能确保高效、健壮的代码。总的来说,AOP在现代Java应用中发挥着重要作用,随着技术发展,其应用场景和潜力将持续扩展。
使用Spring的@Aspect和@Pointcut 注解简化面向切面编程 (AOP)
总的来说,Spring 的 @Aspect 和 @Pointcut 注解简化了面向切面编程(AOP)的实现过程,使得引入横切关注点如日志记录、安全性和事务变得更为便捷。这些注解的优点包括模块化、可重用性、提高代码可读性、减少潜在错误和与 Spring 生态系统的紧密集成,使得应用程序更加健壮且易于维护。
什么是aop
在AOP中,关注点代码(如事务管理、性能监控)被封装在切面类中,这些切面类在运行时会被动态地应用到业务方法上,而无需改变原有的业务代码。在Spring AOP中,有两种主要的动态代理方式:JDK动态代理和CGLIB动态代理。JDK代理要求被代理的类实现一个接口,而CGLIB代理则能够在不需接口的情况下实现代理。...
spring有什么缺点吗
h. Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,它们适用于许多web应用。例如,Spring能使用AOP提供声明性事务管理而不通过EJB容器,如果你仅仅需要与单个数据库打交道,甚至不需要一个JTA实现。i. Spring为数据存取提供了一个一致的框架,不论是使用的是JDBC还是O/R mapping...
谈谈对springaop的理解?
简述你对Spring框架IOC和AOP的理解。IoC就是对象的创建,依赖都由Spring及配置文件控制;AOP就是统一的给一些类似的方法加上同样的功能,比如日志,事务。Spring框架是一个分层架构,由7个定义良好的模块组成。ioc就是控制反转,可以理解为当spring被加载启动后,在spring配置的bean都会被这个框架预先实例化...
spring框架的优点与缺点?
2、mybatis生成这个配置的意义并不大。3、所差别的是事务管理的灵活性和效率而以。在事务灵活性上Spring的txManager要好于MyBatis的SqlSession。二者的区别是Spring的AOP实现了前后通知,在3段提交过程中,可以很方便的定义补充动作。4、mybatis更具有优势。sql语句全都写在xml配置文件中,没有糅合在代码...
spring AOP 拦截器实现问题
— 引入(Introduction):添加方法或字段到被通知的类。Spring允许引入新的接口到任何被通知的对象。例如,你可以使用一个引入使任何对象实现IsModified接口,来简化缓存。— 目标对象(Target Object):包含连接点的对象,也被称作被通知或被代理对象。— AOP代理(AOP Proxy):AOP框架创建的对象,包含...
谈谈@Transactional 的原理和坑
本文介绍了Spring框架中的一个重要特性—@Transactional注解的原理和使用中的一些潜在问题。这个注解用于标识需要进行事务管理的方法,其背后是AOP和代理模式的结合。Spring通过动态代理在被@Transactional注解的方法上创建代理对象,它在方法执行前后负责开启和提交事务。具体过程如下:在调用前,开启新事务或加入...