练习Spring模板类,注入事务管理器以及事务模板后一直org.springframework.beans.factory.BeanCreationException

在尝试使用Spring Template并注入事务管理器及事务模板时遇到BeanCreationException。问题源于事务模板注入事务管理器的名称不正确,正确名称应为'transactionManager'。根据源码修改后,问题解决。此错误暴露了对Spring Bean原理理解不足的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面练习正常,可执行

来到编程事务管理,注入事务管理器以及事务模板后一直提示

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
'transactionTemplate' defined in class path resource [applicationContext.xml]: Error 
setting property values; nested exception is 
org.springframework.beans.NotWritablePropertyException: Invalid property 
'dataSourceTransactionManager' of bean class [org.springframework.transaction.support.TransactionTemplate]: Bean property
 'dataSourceTransactionManager' is not writable or has an invalid setter method. Does the 
parameter type of the setter match the return type of the getter?

因是参照老师课堂练习,所以很疑惑

	<!-- 配置事务管理 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
			<property name="dataSource" ref="dataSource"/>
	</bean>
	
	<!-- 配置事务模板 -->
	<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
		<property name="transactionManager" ref="transactionManager"></property>
	</bean>

看到这个https://blog.youkuaiyun.com/naughty610/article/details/5619092之后,考虑可能是事务模板注入事务管理器时名称不正确导致,于是翻看源码

	/**
	 * Set the transaction management strategy to be used.
	 */
	public void setTransactionManager(PlatformTransactionManager transactionManager) {
		this.transactionManager = transactionManager;
	}

也就是说注入名称其实是固定的  transactionManager,更改后测试通过。

因为前面随便就简写一下,老师也没有明确这一点才陷入这个坑中,究其原因是对于bean的原理理解不够

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值