在Spring,如果我们有两个.yaml文件作为。(包含在应用程序中)
application-one.yaml application-two.yaml
------------------- -------------------
abc: abc:
flow: flow:
- id: 'remote02' - id: 'remote04'
- id: 'remote03' - id: 'remote05'
如果这个配置的属性类类似于-
@ConfigurationProperties(prefix = "abc")
class Abc {
List<Flow> flow;
}
class Flow{
String id;
}
则仅从一个文件加载“流”,即流。size()给出2.(remote04,remote05。这取决于application.yaml中配置文件的顺序)
但如果我将yamls文件更改为-
application-one.yaml application-two.yaml
------------------- -------------------
abc: abc:
flow: flow:
remote02: remote04:
id: remote02 id: remote04
remote03: remote05:
id: remote03 id: remote05
和属性类
@ConfigurationProperties(prefix = "abc")
class Abc {
HashMap<String, Flow> flow;
}
class Flow{
String id;
}
现在hashmap将有4个条目。i、 e.流量。size()给出4
那么,这是否意味着Spring不会从两个yamls加载List结构并将它们添加在一起?
如果是真的,如何克服这个限制?
我认为这是因为Spring boot将YAML文件转换为属性。在第一种情况下,文件将按如下方式转换:
application-one.properties application-two.properties
------------------- -------------------
abc.flow[0].id=remote2 abc.flow[0].id=remote4
abc.flow[1].id=remote3 abc.flow[1].id=remote5
但在第二种情况下,你会得到
application-one.properties application-two.properties
------------------- -------------------
abc.flow.remote02.id=remote02 abc.flow.remote04.id=remote04
abc.flow.remote03.id=remote03 abc.flow.remote05.id=remote05
如您所见,在第一种情况下,您将获得两对相同的属性,而在第二种情况下,您将获得四个唯一属性。因此,在第一种情况下,两个属性将消失,因为它们是多余的。
我不确定你能否避免这种情况。上面链接的文档说,您可以使用<code>YamlMapFactoryBean</code>,但我对Spring的了解不够,无法告诉您是否以及如何将其与<code>@ConfigurationProperties</code>相结合。
问题内容: 我需要从文件加载属性,该文件包含应用程序可以从中读取文件的文件夹的路径。 我正在使用以下代码来注入属性: 用于开发的文件位于下,在生产环境中使用以下命令运行应用程序,以覆盖开发设置: Spring Boot文档说: SpringApplication将在以下位置从application.properties文件加载属性,并将其添加到Spring Environment中: 当前目录的/
我需要从文件加载一个属性,该文件包含应用程序可以从中读取文件的文件夹的路径。 当前目录 类路径/配置包 类路径根 是否必须使用类或添加一个特殊注释来启用Spring Boot中对的支持? 编辑:文件包含一些其他属性,这些属性由Spring Boot成功加载,如或。
我必须调整一个有应用程序的springboot应用程序。配置应用程序属性的yaml文件。 使用java类文件中的注释映射属性,以读取值@ConfigurationProperties(prefix=“propName”) 现在的要求是我需要有另一个文件称为application-profile-2.yml和重命名application.ymlapplication-profile-1.yml,这些
我在应用程序中有我的配置。类路径根中的yml文件(src/main/resources/)。当我正常启动应用程序时,配置加载良好。然而,在我的测试中,应用程序。yml文件根本没有加载。 我的测试的标题如下所示: 配置类: 当我调试应用程序时,我看到yml文件被加载到ConfigFileApplication ationListener中,但在测试中没有调用ConfigFileApplication
使用Spring Boot 1.3.0.Release 编辑:一种工作方法是手动操作:
问题 在本机硬盘上有一个HTML文件,需要对它进行解析从中抽取数据或进行修改。 办法 可以使用静态Jsoup.parse(File in, String charsetName, String baseUri) 方法: File input = new File("/tmp/input.html"); Document doc = Jsoup.parse(input, "UTF-8", "http