今天遇到了一个奇怪的问题 在没添加事务之前 所有的代码都是好的 , 当我添加了事务之后, 代码报错
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type available
ApplicationContext:
<!-- 配置事务 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 开启事务注解注入 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
BookShopServiceImpl
@Transactional
@Override
public void purchase(String isbn, String username) {
// 1.获取书的单价
int price = bookShopDao.findBookPriceByIsbn(isbn);
// 2.获取书的库存
bookShopDao.updateBookStock(isbn);
// 3.更新用户信息
bookShopDao.updateAccount(username, price);
}
BookShopDaotest:
红色部分为添加的代码 , 然后机器认为有两个BookShopServiceImpl 类型的文件,但事实上只有一个。
bookShopDao = context.getBean(BookShopDaoImpl.class);
bookShopService = (BookShopService) context.getBean("bookShopService");
之前是使用的是:
getBean(Class<BookShopDaoImpl> requiredType)
现在使用的是:
getBean(String name) throws BeansException最后在BookShopDao 中重新进行了Bean的获取 换了一种方式 用name的方式获取 而不是使用Class的形式
这样子机器就认识了。
还是需要自己去多学习下Spring的内部知识