我目前正在构建一个spring-boot应用程序,它需要与三种不同的数据库环境一起工作,并以一种与环境无关的方式工作。
“dev”环境将使用本地sqlite数据库。
“uat”环境将使用postgres数据库。
“实时”环境将使用sql数据库。
加载时,我的应用程序检查是否存在环境参数:
如果没有设置,或者环境参数是dev,那么它将创建一个本地sqlite数据库,并在会话期间建立到它的连接。
如果设置为uat,则将建立到heroku postgres数据库的连接。
如果设置为live,那么将建立到mysql数据库的连接。
现在我正努力在java上概念化它。
这是我到目前为止写的代码,在这里我得到了环境参数。除此之外,我不确定要做什么。
@SpringBootApplication
public class Launcher implements CommandLineRunner {
public static void main(String args[]) {
SpringApplication.run(Launcher.class, args);
}
@Override
public void run(String... args) throws Exception {
String currentEnvironment = System.getenv("CURRENT_ENV");
// if current env is null or dev, set up sqlite database (if it doesnt already exist and use this for the remainder of the session
// if uat connect to heroku postgres db
// if live then connect to mysql db
}
}
2条答案
按热度按时间zphenhs41#
我认为真正的问题是:如何指定您的环境?
通过springboot,您可以使用多个应用程序属性文件。您可以使用3个文件:
application.properties(用于开发环境)
application-uat.properties(用于uat环境)
application-live.properties(对于live env)。
您也可以使用yaml文件来实现这一点。
有很多方法可以让springboot选择正确的环境属性文件。
有许多方法可以选择正确的环境文件。
例如,如果您对每个环境都使用tomcat,您可以设置spring.profiles.active属性
JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=ENV_NAME"
(在setclasspath.bat(setclasspath.sh,如果您在[l]unix上)中,环境名称可以是uat或live。chhkpiq42#
这就是在spring中创建概要文件的目的,spring boot允许您拥有帮助您的应用程序在不同环境中运行的概要文件。
因此,在您的示例中,必须创建三个属性文件
dev.properties
uat.propertieslive.properties
在每个属性文件中,必须设置开发所需的配置。然后只需激活你想要的配置文件。对于每一个,我将创建一个@configuration类。
我想提一个很好的书专业 Spring 启动由费利佩古铁雷斯,它可以教你很多。