我以 Jar 文件的形式将我的应用程序扔到服务器上!
在我的应用程序中,为我的计算机配置了数据库连接数据和静态文件的路径,但我希望我不要打扰不断评论 中的数据application.properties,而只是程序本身了解它的位置(在服务器上或在计算机上)并获取必要的数据。
例如,要自动路由静态文件,我使用以下配置:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (new File("/path/on/my/computer/file/").isDirectory()) {
registry.addResourceHandler("/data/**").addResourceLocations(
"file:/path/on/my/computer/file/"
);
}
if (new File("/path/on/my/server/files/").isDirectory()) {
registry.addResourceHandler("/data/**").addResourceLocations(
"file:/path/on/my/server/files/"
);
}
// некоторый код...
}
我不认为这个决定是最好的,我认为这是一个拐杖。我想摆脱它。
另一个例子是数据库连接。我将数据移动到一个单独的文件database.properties中。我认为值得将此文件移到项目外部并设置路径。
目前,我的数据库数据如下所示:
# ==============================================================
# = Data Source
# ==============================================================
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/database
spring.datasource.username=userRemote
spring.datasource.password=password1
#spring.datasource.username=userLocal
#spring.datasource.password=password2
或者,在收集器级别,您可以在组装过程中从不同的文件夹中获取 application.properties,但是您需要不断维护两个几乎没有区别的 application.properties。
或者你可以使用注解
@Profile("dev")。您可以在此处阅读有关使用配置文件的更多信息https://www.baeldung.com/spring-profiles这个答案使用:
- YuriSPb♦想法 -从 SO
回答这个问题
在我看来,最简单的方法是创建几个
application-[profile].properties.对于这个项目,我会制作2 个配置文件:
在 Spring 应用程序中,
resources我们在文件夹中创建三个文件:应用程序属性:
profile
prod和 for的一般数据将记录在此处dev。根据问题中的数据,表格数据可以这样写:同样在此文件中设置默认配置文件:
应用程序开发:
我们在开发应用程序时需要的数据都会记录在这里。例如:
应用产品:
我们在将应用程序部署到服务器时需要的数据都会记录在这里。例如:
结果,这段代码:
...可以简化为一种方法,它不再看起来像“拐杖”:
从 jar 文件将应用程序部署到服务器时在配置文件之间切换
用于选择配置文件
-Dspring.profiles.active=[profile]。这一行替换профиль по умолчанию了我们需要的配置文件因此,例如,要设置配置文件,
prod我们编写以下内容: