在学习spring框架时,我目前正处于事务管理主题,虽然我不是100%反对使用xml,但我一直在尝试使用注释来做所有事情。随之而来的是这个事务管理事物和教师只是把它放到xml文件中并引用我用注释创建的DataSource bean
......下面......
package com.udemy.learning.main;
import java.sql.SQLException;
import javax.sql.DataSource;
import javax.annotation.*;
import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component("connect")
public class Connections extends BasicDataSource{
@Value("${jdbc.user}")
private String username;
@Value("${jdbc.password}")
private String password;
@Value("${jdbc.driver}")
private String driverClassName;
@Value("${jdbc.url}")
private String url;
public DataSource connect() throws SQLException{
super.setDriverClassName(this.driverClassName);
super.setUrl(this.url);
super.setUsername(this.username);
super.setPassword(this.password);
return super.createDataSource();
}
@PreDestroy
public void close() {
try {
super.close();
System.out.println("Connection closed");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
因此,在尝试使用代码和注释完成所有操作时,我创建了一个TransactionManager类,并在其上方使用了@Component注释。我相信你可以想象看起来像什么,所以我不会放弃它,加上我认为它看起来相当初级。
无论如何,长问题很短......
有没有办法以我尝试的方式进行此事务管理配置?而不是严格的xml?我的尝试最终导致了如下错误......
Bean named 'transactionManager' must be of type [org.springframework.transaction.PlatformTransactionManager], but was actually of type [com.udemy.learning.main.TransactionManager]
答案 0 :(得分:0)
您需要将bean设置为PlatformTransactionManager
类型,以便在PlatformTransactionManager
类中扩展TransactionManager
。发生异常是因为Spring期望任何事务管理器成为PlatformTransactionManager