package org.springframework.issues;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
public class AppInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
ConfigurableListableBeanFactory beanFactory = applicationContext.getBeanFactory();
DataSource dataSource = createDataSource();
beanFactory.registerSingleton("dataSource", dataSource);
beanFactory.registerSingleton("myTransactionManager", createPlatformTransactionManager(dataSource));
}
public DataSource createDataSource() {
EmbeddedDatabase dataSource = new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).build();
return dataSource;
}
public PlatformTransactionManager createPlatformTransactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}