gpt4 book ai didi

java - Spring Boot 在启动时使用构造函数参数初始化 bean

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:09:21 24 4
gpt4 key购买 nike

我需要在启动时使用带有构造函数参数的 Spring Boot 初始化以下 PointQuadTree 类,并使该对象在整个应用程序中可用。构造函数参数 'minX, maxX, ...' 需要来自 application.properties 文件。

点四叉树

public class PointQuadTree<T extends PointQuadTree.Item> {

private final Bounds mBounds;

public PointQuadTree(double minX, double maxX, double minY, double maxY) {
this(new Bounds(minX, maxX, minY, maxY));
}

...

}

界限

public class Bounds {
public final double minX;
public final double minY;

public final double maxX;
public final double maxY;

public final double midX;
public final double midY;

public Bounds(double minX, double maxX, double minY, double maxY) {
this.minX = minX;
this.minY = minY;
this.maxX = maxX;
this.maxY = maxY;

midX = (minX + maxX) / 2;
midY = (minY + maxY) / 2;
}

...
}

我试过用@Component注释PointQuadTree,但是没有不带参数的构造函数。即使我添加了一个不带参数的构造函数,Bounds也是final,所以在PointQuadTree初始化之后就不能设置了。此外,Bounds 具有仅带参数的构造函数。

PointQuadTree 初始化后,我需要将它放在内存中,并且需要能够在其他组件中 Autowiring 它以读取/删除/添加项目。我不知道如何使用 Spring Boot 执行此操作。非常感谢任何帮助。

最佳答案

这就像用 Spring 方式创建 bean 一样简单...

@Configuration
public class AppBeans{
@Value("${minx:100}")
private double minX;
...so on ..
@Bean
public PointQuadTree pointQuadTree()
{
return new PointQuadTree(minX...so on);
}

}

并使用 @Autowired

将这个 bean 注入(inject)到你想要的地方

此处${minx:100},尝试从属性文件中读取,如果未指定则采用默认值100

关于java - Spring Boot 在启动时使用构造函数参数初始化 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28060700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com