package com.mogujie.trade.db;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
/**
* @author by jiuru on 16/7/14.
*/
public class RoutingDataSourceTransactionManager extends DataSourceTransactionManager {
private final Logger logger = LoggerFactory.getLogger(getClass());
private String name;
/**
*
*/
private static final long serialVersionUID = 2532966497797909623L;
public RoutingDataSourceTransactionManager() {
}
public RoutingDataSourceTransactionManager(DataSource dataSource) {
super(dataSource);
}
@Override
protected Object doGetTransaction() {
RoutingDataSourceTransactionContext.setCurDataSource(getDataSource());
logger.debug("Transaction of {} begin", this.name);
return super.doGetTransaction();
}
@Override
protected void doCleanupAfterCompletion(Object transaction) {
super.doCleanupAfterCompletion(transaction);
RoutingDataSourceTransactionContext.clear();
logger.debug("Transaction of {} ends", this.name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}