栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring AOP中使用事务管理注解@Transactional出现错误BeanNotOfRequiredTypeException

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring AOP中使用事务管理注解@Transactional出现错误BeanNotOfRequiredTypeException

解决出现的BeanNotOfRequiredTypeException问题

刚开始以为是Spring AOP中动态代理的两种模式出现的错误,一直再翻看两者之间区别,但是看了很多资料,发现出现的问题和JDK动态代理以及CGlLIB动态代理中出现的一些问题不匹配。当然还和两者之间动态代理机制有关联的

出现BeanNotOfRequiredTypeException的原因是:在测试,通过getBean()获取IOC容器中的对象出现错误

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
AccountServiceImpl accountService = context.getBean("accountService", AccountServiceImpl.class);
@Service("accountService")
@Transactional //事务注解
public class AccountServiceImpl implements AccountService {
}

分析:
1. 因为AOP默认情况使用的是JDK动态代理,而JDK动态代理是面向接口的
2. 在上述代码中getBean中accountService是代理对象,AccountServiceImpl是AccountService接口的实现类

解决:
通过getBean()获取获取对象时,获取接口类型的

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
AccountService accountService = context.getBean("accountService", AccountService.class);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785624.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号