当我加载以下application.yaml时,将解析组件及其关系,但不会重新使用已存在的实例,而是创建新的comp1。使用独立的SnakeYAML时,将正确地重用对象。 为了简洁起见,我在代码示例中省略了访问器。
components:
- &comp1
name: comp1
- &comp2
name: comp2
dependencies: [*comp1]
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "components")
public class ComponentConfiguration {
private List<Component> components;
}
public class Component {
private String name;
private List<Component> dependencies;
}
所以在调试器中我看到了:
components = {ArrayList} size = 2
0 = {Component@0}
1 = {Component@1}
dependencies = {ArrayList} size = 1
0 = {Component@2}
我的目标是将正确重用的Component @ 0作为依赖项而不是新的实例Component @ 2。 如何使用Spring Boot和YAML实现这一目标?