今天我已经开始使用Spring Boot了,我想用Embedded Derby创建Restfull服务(完成Tomcat嵌入式)。如何管理自动配置的数据库以及如何填充数据库?
答案 0 :(得分:2)
使用EmbeddedDatabase
(DataSource
的子接口)作为dataSource
bean。您可以使用EmbeddedDatabaseBuilder
作为便利类来帮助构建bean。您可以使用构建器添加sql脚本,以及设置EmbeddedDatabaseType
类似
@Configuration
public class AppConfig {
@Bean
public EmbdeddedDataBase dataSource() {
return new EmbeddedDataBaseBuilder()
.addScripts("...", "...")
.setType(EmbeddedDataBaseType.DERBY).
.build();
}
}
EmbeddedBataBase
和其他提到的类都在spring jdbc jar中。还要确保你有德比罐。
答案 1 :(得分:-1)
我有以下代码,所以它很糟糕(我的意思是主类配置):
@Configuration
@EnableAutoConfiguration
@ComponentScan
@EnableJpaRepositories
public class Application {
private static final String DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
public static final String JDBC_URL = "jdbc:derby:db;create=true";
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName(DRIVER);
Connection connection = DriverManager.getConnection(JDBC_URL);
connection.createStatement().execute("create table users(id integer, name varchar(20), surname varchar(20))");
connection.createStatement().execute("insert into users values " +
"(1, 'aaaaaaaa', 'werwer'), " +
"(2, 'aaaa', 'werdfdfdfwer'), " +
"(3, 'aa', 'dfdfwerwer')");
System.out.println("channels table created and recordes successfully inserted...");
ApplicationContext ctx = SpringApplication.run(Application.class, args);
System.out.println("Let's inspect the beans provided by Spring Boot:");
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for (String beanName : beanNames) {
System.out.println(beanName);
}
}
}