Spring启动时使用构造函数参数初始化bean

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

PointQuadTree

 public class PointQuadTree { 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初始化之后,我需要它在内存中,并且需要能够在其他组件中自动assembly它以读取/删除/添加项目。 我不知道如何使用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注入所需的位置

这里${minx:100} ,尝试从属性文件中读取,如果未指定,则默认为100

在一些配置文件中创建一个树的spring bean,如下所示:

 @Configuration public class PointQuadTreeBeans { @Bean(name="theSameTree") public PointQuadTree getPointQuadTree(Environment env) { double minX = env.getProperty("minX"); double maxX = env.getProperty("maxX"); double minY = env.getProperty("minY"); double maxY = env.getProperty("maxY"); PointQuadTree tree = new PointQuadTree(minX, maxX, minY, maxY); } } 

并将此类添加到spring componentScan

UPD

其他方式:

而不是double minX = env.getProperty("minX"); 你可以用@Value创建字段,比如@chrylis在评论中说:

 @Value("${minX}") private double minX; 

然后使用它来创建bean。