Spring Boot在YAML配置中为别名创建新实例

Spring Boot在YAML配置中为别名创建新实例,spring,spring-boot,yaml,anchor,alias,Spring,Spring Boot,Yaml,Anchor,Alias,当我加载下面的application.yaml时,组件及其关系将被解析,但是不会重用已经存在的实例,而是会创建一个新的comp1。当使用独立SnakeYAML时,对象将被正确地重用。 为了简洁起见,我在代码示例中省略了访问器 组件: -&comp1 姓名:comp1 -&comp2 姓名:comp2 依赖项:[*comp1] @配置 @EnableConfigurationProperties @配置属性(前缀=“组件”) 公共类组件配置{ 私有列表组件; } 公共类组件{ 私有字符串名称;

当我加载下面的application.yaml时,组件及其关系将被解析,但是不会重用已经存在的实例,而是会创建一个新的comp1。当使用独立SnakeYAML时,对象将被正确地重用。 为了简洁起见,我在代码示例中省略了访问器

组件:
-&comp1
姓名:comp1
-&comp2
姓名:comp2
依赖项:[*comp1]
@配置
@EnableConfigurationProperties
@配置属性(前缀=“组件”)
公共类组件配置{
私有列表组件;
}
公共类组件{
私有字符串名称;
私有列表依赖关系;
}
因此,在调试器中,我看到:

components = {ArrayList} size = 2
  0 = {Component@0}
  1 = {Component@1}
    dependencies = {ArrayList} size = 1
      0 = {Component@2}
我的目标是正确地重用Component@0作为依赖项而不是新实例Component@2.
如何使用Spring Boot和YAML实现这一点?

我想这与Spring Boot将SnakeYAML返回的HashMap展平有关。这样,引用(即锚的别名)将丢失,因为每个定义都将转换为属性哈希表中的一个简单条目:/i我想这与Spring Boot展平SnakeYAML返回的哈希映射有关。这样,引用(即锚的别名)将丢失,因为每个定义都将转换为属性哈希表中的一个简单条目:/