我正在寻找解决这个问题的方法。
我有几个属性文件(application.properties、application realdb.properties)。假设我从“realdb”spring概要文件开始。现在,我想在部署到tomcat上时重写我的属性。我决定将文件放在/lib文件夹中,因为它自动位于类路径上,我没有找到更好的(即特定于应用程序的类路径文件夹)
所以我可以在那里申请。属性,只要我只有一个应用程序,它就可以工作。如果我有多个spring boot应用程序,我想给文件命名(注意:特定于应用程序的命名)
>
我可以使用app。特定的Spring轮廓并添加 /lib/application-appname.properies,其中包括传递正确轮廓的必要性
我可以用Spring。配置。名称,我也不喜欢它,因为需要在命令行中传递它(我不知道在war文件中可以这样做,可能在spring boot主类中设置系统属性?)
在@ConfigurationProperties(locations=“类路径:appname.properties,前缀…”中它按我所希望的方式工作,它被正确覆盖,但仅限于绑定值的类。
总结:有没有办法在类路径上复制特定命名的文件,从而覆盖application.properties????
我现在可以使用不同的属性名称,但在类路径外部加载文件时仍然存在问题。
Adding [applicationConfig: [classpath:/my-app-realdb.properties]] PropertySource with search precedence immediately lower than [applicationConfigurationProperties]
Adding [applicationConfig: [classpath:/config/my-app.properties]] PropertySource with search precedence immediately lower than [applicationConfig: [classpath:/my-app-realdb.properties]]
Adding [applicationConfig: [classpath:/my-app.properties]] PropertySource with search precedence immediately lower than [applicationConfig: [classpath:/config/my-app.properties]]
最后一个在。war,I quess/lib/config文件夹应具有优先权
3. A classpath /config package
4. The classpath root
所以寻找答案的工作还在继续
UPDATE2看起来顺序是
1. /config/application-<profile_specific>.properties
2. /application-<profile_specific>.properties
3. /config/application.properties
4. /application.properties
这意味着我不能覆盖所有非配置文件特定的属性,这可能是预期的,但对我来说,如果我只想要一个文件来统治它们都不是很有用。
您可以在主类中配置spring.config.name
属性,可以在作为可执行存档运行时在main
方法中配置,也可以在作为战争部署时在confiure
方法中配置。例如:
@SpringApplication
public class SampleApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SampleApplication.class)
.properties("spring.config.name:my-app");
}
public static void main(String[] args) throws Exception {
new SpringApplicationBuilder(SampleApplication.class)
.properties("spring.config.name:my-app").build().run(args);
}
}
有了此更改,Boot将查找名为my app的文件。属性和我的应用程序{profile}。属性。
我正在开发一个spring boot应用程序 我想用外部文件(例如)重写中的某些属性。 我尝试了几种方法: 中的“我的应用程序.属性”中的 我使用对其进行了测试。第一个方法只添加了属性,但没有重写它们。
问题内容: 我有一个Spring应用程序,到目前为止运行良好。现在,我希望属性文件位于外部配置文件夹中,而不是在打包的jar中,而无需重新打包即可更改内容。这就是我得到的: 问题答案: 如果将其放置在名为spring的目录中的类路径中的某个位置(相应地更改名称/目录),则可以使用 这将指向web-inf / classes / config / springcontext.properties
我在src/main/resources下创建了2个文件: 应用程序。属性 第一个具有从env变量中获取值的属性,而后者具有固定值。 根据这里的具体情况,我以这样的方式推出了Spring靴: 然而,不会产生任何影响,并且应用程序是局部的。属性似乎被忽略。 有什么提示吗?
完成干净的构建后,我将war文件复制到Tomcat的文件夹中。但是部署会发生两次,并且在上下文已经存在的情况下以异常结束。我错过了什么? 非常感谢您的帮助。
我正在将一个非常基本的web应用程序部署到Google应用程序引擎。我使用的是Springboot,我可以在本地很好地运行应用程序,但当我部署到Google时,应用程序引擎不会启动实例。我在启动时配置了一个云SQL数据源。 我有云sql配置属性配置src/main/Resources/application.properties.App Engine似乎找不到这些属性,所以它无法正确设置Cloud