@Bean public BoneCPDataSource dataSource() { BoneCPDataSource dataSource = new BoneCPDataSource(); dataSource.setDriverClass(environment.getRequiredProperty(PROPERTY_NAME_DATABASE_DRIVER)); dataSource.setJdbcUrl(environment.getRequiredProperty(PROPERTY_NAME_DATABASE_URL)); dataSource.setUsername(environment.getRequiredProperty(PROPERTY_NAME_DATABASE_USERNAME)); dataSource.setPassword(environment.getRequiredProperty(PROPERTY_NAME_DATABASE_PASSWORD)); // https://github.com/wwadge/bonecp/blob/master/bonecp/src/main/resources/bonecp-default-config.xml dataSource.setConnectionTestStatement("SELECT 1 FROM DUAL"); dataSource.setMinConnectionsPerPartition(0); dataSource.setMaxConnectionsPerPartition(10); dataSource.setMaxConnectionAge(0, TimeUnit.SECONDS); dataSource.setConnectionTimeout(5, TimeUnit.SECONDS); dataSource.setIdleMaxAge(60, TimeUnit.MINUTES); dataSource.setAcquireIncrement(1); dataSource.setPartitionCount(1); dataSource.setIdleConnectionTestPeriod(240, TimeUnit.MINUTES); dataSource.setStatementsCacheSize(500); dataSource.setCloseConnectionWatch(false); dataSource.setAcquireRetryDelay(7000, TimeUnit.MILLISECONDS); dataSource.setAcquireRetryAttempts(5); dataSource.setQueryExecuteTimeLimit(1, TimeUnit.MILLISECONDS); dataSource.setLazyInit(false); dataSource.setLogStatementsEnabled(true); return dataSource; }
@Bean public DataSource dataSource() { BoneCPDataSource dataSource = new BoneCPDataSource(); dataSource.setDriverClass(environment.getRequiredProperty(PROPERTY_NAME_DATABASE_DRIVER)); dataSource.setJdbcUrl(environment.getRequiredProperty(PROPERTY_NAME_DATABASE_URL)); dataSource.setUsername(environment.getRequiredProperty(PROPERTY_NAME_DATABASE_USERNAME)); dataSource.setPassword(environment.getRequiredProperty(PROPERTY_NAME_DATABASE_PASSWORD)); return dataSource; }
@Bean(destroyMethod = "close") public DataSource dataSource() { BoneCPDataSource dataSource = new BoneCPDataSource(); dataSource.setDriverClass(driverClass); dataSource.setJdbcUrl(jdbcUrl); dataSource.setUsername(jdbcUsername); dataSource.setPassword(jdbcPassword); dataSource.setIdleConnectionTestPeriodInMinutes(idleConnectionTestPeriodInMinutes); dataSource.setIdleMaxAgeInMinutes(idleMaxAgeInMinutes); dataSource.setMaxConnectionsPerPartition(maxConnectionsPerPartition); dataSource.setMinConnectionsPerPartition(minConnectionsPerPartition); dataSource.setPartitionCount(partitionCount); dataSource.setAcquireIncrement(acquireIncrement); dataSource.setStatementsCacheSize(statementsCacheSize); return dataSource; }
@Override public void configure() { Binder binder = binder(); BoneCPDataSource datasource = new BoneCPDataSource(); datasource.setDriverClass(Driver.class.getName()); datasource.setJdbcUrl( System.getProperty("jdbc.url", "jdbc:h2:mem:thedb;DB_CLOSE_ON_EXIT=FALSE")); datasource.setUsername(System.getProperty("jdbc.user", "root")); datasource.setPassword(System.getProperty("jdbc.password", "notreallyused")); DBI dbi = JDBIHelper.getDBI(datasource); binder.bind(IDBI.class).toInstance(dbi); binder .bind(String.class) .annotatedWith(Names.named("db.prefix")) .toInstance(H2TypeHelper.DATABASE_PREFIX); binder .bind(Boolean.class) .annotatedWith(Names.named("nuke.allowed")) .toInstance(Boolean.valueOf(System.getProperty("nuke.allowed", "false"))); SequenceServiceDatabaseImpl sequenceService = new SequenceServiceDatabaseImpl( new SequenceHelper( Boolean.valueOf(System.getProperty("strict.type.creation", "true"))), dbi, H2TypeHelper.DATABASE_PREFIX, SequenceServiceDatabaseImpl.DEFAULT_INCREMENT); binder.bind(SequenceService.class).toInstance(sequenceService); binder.bind(SequenceServiceDatabaseImpl.class).toInstance(sequenceService); binder.bind(KeyValueStorage.class).to(H2KeyValueStorage.class).asEagerSingleton(); binder.bind(SqlTypeHelper.class).to(H2TypeHelper.class).asEagerSingleton(); binder.bind(SecondaryIndexTableHelper.class).asEagerSingleton(); binder.bind(JDBISecondaryIndex.class).asEagerSingleton(); bind(SchemaResource.class).asEagerSingleton(); bind(CounterResource.class).asEagerSingleton(); bind(SecondaryIndexResource.class).asEagerSingleton(); bind(UniqueIndexResource.class).asEagerSingleton(); bind(ImportExportResource.class).asEagerSingleton(); bind(PingResource.class).asEagerSingleton(); }
@Inject public void setDriverClass(@Named("JDBC.driver") final String driverClass) { dataSource.setDriverClass(driverClass); }