我正在开发一个spring boot应用程序(让我们调用这个MyLib)。它使用spring-cloud-stream。我的想法是,这个应用程序将被另一个Java应用程序用作jar(让我们称之为MyApp。它可能不是一个弹簧启动)。我尝试做的是MyApp将指定MyLib中代码将使用的spring.cloud.stream.bindings.<channel>.destination
。
这可以实现吗?
答案 0 :(得分:0)
我不知道具体是spring.cloud.stream.bindings
,但是Spring Boot应用程序可以从类路径上的多个位置加载application-${profile}.properties
:
SpringApplication将从application.properties加载属性 将文件放在以下位置并将它们添加到Spring中 环境:
- 当前目录的A / config子目录。
- 当前目录
- 类路径/配置包
- 类路径根
列表按优先顺序排列(在位置中定义的属性) 列表中的较高值会覆盖较低位置中定义的值。
...
默认搜索路径 classpath:,classpath:/ config,file :, file:config /总是使用, 与spring.config.location
的值无关
换句话说,application-${profile}.properties
文件必须位于./
内的./config/
或MyApp.jar
。
您还可以使用spring.config.location
定义其他查找文件夹,但这必须在运行时完成:
很早就会使用
spring.config.name
和spring.config.location
来确定哪些文件 必须加载,因此必须将它们定义为环境 属性(通常是OS env,系统属性或命令行参数)。
覆盖application.properties中的spring属性
考虑属性的顺序如下(from spring documentation):
- @TestPropertySource测试注释。
- 命令行参数。
- 来自SPRING_APPLICATION_JSON的属性(嵌入在环境变量或系统属性中的内联JSON)
- ServletConfig init参数。
- ServletContext init参数。
- 来自java:comp / env。
的JNDI属性- Java系统属性(System.getProperties())。
- 操作系统环境变量。
- 一个只有随机属性的RandomValuePropertySource。*。
- 打包jar之外的特定于配置文件的应用程序属性(application- {profile} .properties和YAML变体)
- 打包在jar中的特定于配置文件的应用程序属性(application- {profile} .properties和YAML变体)
- 打包jar之外的应用程序属性(application.properties和YAML变体)。
- 打包在jar中的应用程序属性(application.properties和YAML变体)。
- @Configuration类上的@PropertySource注释。
- 默认属性(使用SpringApplication.setDefaultProperties指定)。