Java 在应用程序运行时,使用spring boot在需要时创建架构和表

Java 在应用程序运行时,使用spring boot在需要时创建架构和表,java,postgresql,hibernate,spring-boot,spring-data-jpa,Java,Postgresql,Hibernate,Spring Boot,Spring Data Jpa,我在应用程序启动和运行时创建新模式时遇到问题。我设法创建了一个过滤器,在模式之间切换以连接到正确的模式,但现在我想使用Hibernate或Spring在当前应用程序中创建新的模式。我使用的是多策略模式方法 在我的Rest控制器中,我有一个为管理员设计的方法,可以简单地添加一个新的应用程序客户/模式。此方法应负责创建模式、表和所有内容。到目前为止,我通过启动另一个SpringBoot应用程序作为一个进程并等待它完成来完成所有事情 try(语句stmt=dataSource.getConnectio

我在应用程序启动和运行时创建新模式时遇到问题。我设法创建了一个过滤器,在模式之间切换以连接到正确的模式,但现在我想使用Hibernate或Spring在当前应用程序中创建新的模式。我使用的是多策略模式方法

在我的Rest控制器中,我有一个为管理员设计的方法,可以简单地添加一个新的应用程序客户/模式。此方法应负责创建模式、表和所有内容。到目前为止,我通过启动另一个SpringBoot应用程序作为一个进程并等待它完成来完成所有事情

try(语句stmt=dataSource.getConnection().createStatement();){
stmt.execute(“CREATE SCHEMA”+instance.getDomain()+“AUTHORIZATION”+dbUsername+“;”);
//执行java-jar schemacreator。。。
List命令=new ArrayList();
add(“java”);
add(“-jar”);
commands.add(dbCreatorPath);//找到必须运行的应用程序的数据库创建者路径
commands.add(dbUrl);//arg 1-数据库的url
commands.add(dbUsername);//arg 2-db username
commands.add(dbPassword);//arg 3-db password
commands.add(instance.getDomain());//arg 4-生成的架构的名称
Process p=新的ProcessBuilder(命令).start();
if(log.isDebugEnabled()){
try(BufferedReader input=new BufferedReader(new InputStreamReader(p.getInputStream())){
弦线;
而((line=input.readLine())!=null){
系统输出打印项次(行);
}
}
}
int exitValue=p.waitFor();
log.info(“数据库创建者工具的出口值:{}”,出口值);
如果(exitValue!=0){//已成功创建表
抛出新的RuntimeException(“db creator工具的退出值不是预期的,而是”+exitValue);
}
}捕获(例外e){
log.error(e.getLocalizedMessage(),e);
}
这一切正常,因为数据库创建者在更新时设置了属性spring.jpa.hibernate.ddl-auto,用于创建表。知道我只使用一个数据源可能很重要

那么,是否有任何内部方法/途径可用于在刚刚创建的模式上执行表的创建?最好是在类路径上自动找到带注释的类。基本上,在SpringBoot启动时执行ddl的过程应该发生在这里

我正在使用:

spring boot starter父级2.1.1.1版本

spring boot starter数据jpa 2.1.1.1版本

PostgreSQL

任何帮助或至少是指导都会非常有帮助。谢谢