Skip to content

Instantly share code, notes, and snippets.

@chibat
Last active December 31, 2015 15:09
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save chibat/8004877 to your computer and use it in GitHub Desktop.
Save chibat/8004877 to your computer and use it in GitHub Desktop.
Spring boot with h2 console
package hello;
import javax.sql.DataSource;
import jp.sf.amateras.mirage.SqlManager;
import jp.sf.amateras.mirage.SqlManagerImpl;
import jp.sf.amateras.mirage.dialect.HyperSQLDialect;
import jp.sf.amateras.mirage.integration.spring.SpringConnectionProvider;
import org.apache.commons.dbcp.BasicDataSource;
import org.h2.Driver;
import org.h2.server.web.WebServlet;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.ServletRegistrationBean;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration
@EnableTransactionManagement
@EnableAutoConfiguration
@ComponentScan
public class Application {
/**
* javaコマンドのオプションに、 -Dtomcat.port=XXXX とすればポート番号を変更できる
*/
@Value("${tomcat.port:8080}")
private int port;
@Value("${db.file:~/spring_boot_template/db}")
private String dbFile;
@Value("${db.pass:}")
private String dbPass;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
/**
* H2のコンソール画面のサーブレットを組み込む
*
* @return
*/
@Bean
public ServletRegistrationBean h2servletRegistration() {
ServletRegistrationBean registration = new ServletRegistrationBean(
new WebServlet());
registration.addUrlMappings("/console/*");
return registration;
}
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(this.port);
factory.setPort(this.port);
// other settings.
return factory;
}
@Bean
public DataSource dataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(Driver.class.getName());
dataSource.setUsername("sa");
dataSource.setUrl("jdbc:h2:" + dbFile);
dataSource.setPassword(dbPass);
return dataSource;
}
@Bean
public SqlManager sqlManager(DataSource dataSource) {
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
transactionManager.setDataSource(dataSource);
SpringConnectionProvider springConnectionProvider = new SpringConnectionProvider();
springConnectionProvider.setTransactionManager(transactionManager);
SqlManager sqlManager = new SqlManagerImpl();
sqlManager.setDialect(new HyperSQLDialect());
sqlManager.setConnectionProvider(springConnectionProvider);
return sqlManager;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment