`

spring中服务类自身方法嵌套调用无法进入AOP

 
阅读更多

spring中服务类自身方法嵌套调用无法进入AOP

原因:
1.AOP的实现是通过JDK代理类进入HANDLE进行AOP处理的
2.服务类中拿this则是服务类的实例,所以无法进入AOP

解决方法:
可以在服务类中使用工厂类获取代理类而不要使用this

分享到:
评论

相关推荐

    AOP实现自我调用的事物嵌套问题

    当我们遇到"AOP实现自我调用的事物嵌套问题"时,这通常涉及到Spring框架中的事务管理,特别是自调用方法在事务处理时可能会引发的问题。 首先,让我们理解Spring AOP的事务管理是如何工作的。Spring使用代理模式来...

    spring-nested-aop.zip_aop_spring aop

    在Spring AOP中,切面可以通过编写`@Aspect`注解的类来定义。 - **通知(Advice)**: 通知是在特定连接点(Join Point)执行的代码,比如方法调用前、后或异常时。Spring AOP支持多种类型的通知,如`@Before`、`@...

    spring隔离级别和aop基础.md

    在 AOP 中,反射常用于创建代理类和调用目标方法。虽然反射提供了强大的灵活性,但它可能会影响性能,尤其是在大量使用的情况下。 综上所述,事务隔离级别和事务传播行为是确保数据一致性和事务处理的重要工具,而 ...

    Spring AOP之基于Schema配置总结与案例

    通过这样的配置,当UserService的任何方法被调用时,都会自动触发LoggingService中的对应通知方法,无需在UserService中做任何修改,这就是Spring AOP的声明式特性。 在实际开发中,我们可以根据需求定义多个切面,...

    springAop事务配置

    在Spring框架中,AOP(面向切面编程)被广泛用于实现事务管理,因为它允许我们以声明式的方式处理事务,从而让业务代码更加简洁、易维护。本篇将详细讲解Spring AOP如何进行事务配置,包括注解和非注解两种方式。 1...

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.7. 编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1....

    Spring AOP管理Hibernate事务(TransactionInSpringAOP)

    3. **AOP代理**:Spring会创建一个代理对象来包围业务逻辑,当方法调用时,代理会检查是否有@Transactional注解,并根据注解的属性启动一个新的事务或参与到现有的事务中。 4. **事务传播行为**:比如PROPAGATION_...

    Spring中文帮助文档

    6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.6.1. 理解AOP代理 6.7. 以编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ进行domain ...

    SSM整合-用springaop-demo01实现了注解AOP,SSM-MybatisOneForOne-demo01实现了

    - **MyBatis与Spring整合**:在`SSM-MybatisOneForOne-demo01`中,MyBatis与Spring整合,使用`@Autowired`自动注入SqlSessionTemplate或SqlSessionFactoryBean,通过Mapper接口调用SQL。 - **Mapper接口**:...

    Spring2.x对事务的管理(AOP)

    编程式事务管理需要在代码中显式调用开始、提交或回滚事务的方法,而声明式事务管理则通过注解或XML配置,让Spring自动处理事务。 **二、Spring的AOP(面向切面编程)** AOP允许程序员定义“切面”,这些切面可以...

    spring学习文档

    CGLib 采用非常底层的字节码技术,可以为一个类创建子类,并在子类中采用方法拦截技术拦截所有父类方法的调用,并顺势织入横切逻辑。 四、Spring 事务管理 Spring 事务管理主要通过三个接口:...

    Spring声明式事务配置管理方法

    Spring 声明式事务管理是Spring框架中的一个重要特性,它允许开发者在不编写任何事务管理代码的情况下,通过配置来管理事务。这种方式极大地简化了事务处理,并提高了代码的可维护性。以下是关于Spring声明式事务...

    Spring.3.x企业应用开发实战(完整版).part2

    10.3 事务方法嵌套调用的迷茫 10.3.1 Spring事务传播机制回顾 10.3.2 相互嵌套的服务方法 10.4 多线程的困惑 10.4.1 Spring通过单实例化Bean简化多线程问题 10.4.2 启动独立线程调用事务方法 10.5 联合军种作战的...

    深入理解Spring声明式事务:源码分析与应用实践

    在嵌套事务逻辑中,如果一个事务内的方法也被`@Transactional`注解,Spring会根据传播行为来决定如何处理。例如,`PROPAGATION_REQUIRED`会将新的方法调用加入到当前事务,而`PROPAGATION_NEW`则会启动一个新的独立...

    Spring 2.0 开发参考手册

    6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.7. 编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 ...

    Spring API

    6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.6.1. 理解AOP代理 6.7. 以编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ进行domain ...

    Spring-Framework-Notes-For-Professionals.pdf

    - RestTemplate类用于在Spring应用程序中执行RESTful服务调用。 - 提供了下载大文件和设置请求头等实用方法。 - 在调用RESTful服务时,RestTemplate可以用来发送HTTP请求并处理响应。 以上是对“Spring-...

    Spring事务传播Demo.zip

    在Spring中,事务的传播行为是指一个事务方法被另一个事务方法调用时,应该如何处理当前事务。Spring定义了七种事务传播行为: 1. **PROPAGATION_REQUIRED**:这是默认的传播行为,如果当前存在事务,则加入该事务...

    Spring3.x企业应用开发实战(完整版) part1

    10.3 事务方法嵌套调用的迷茫 10.3.1 Spring事务传播机制回顾 10.3.2 相互嵌套的服务方法 10.4 多线程的困惑 10.4.1 Spring通过单实例化Bean简化多线程问题 10.4.2 启动独立线程调用事务方法 10.5 联合军种作战的...

    Spring4--3.jdbcTemplate事务

    编程式事务管理需要在代码中显式地开始、提交或回滚事务,通常在回调方法或者AOP切面中实现。而声明式事务管理则更便捷,通过配置元数据(如XML或注解)来定义事务边界,让Spring容器自动管理事务。 1. **声明式...

Global site tag (gtag.js) - Google Analytics