事务管理Spring框架



在学习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]

您需要您的bean类型为PlatformTransactionManager,因此在TransactionManager类中扩展PlatformTransactionManager。发生异常是因为Spring期望任何事务管理器是PlatformTransactionManager

的子类

最新更新