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

Jer*_*rry 3 java spring spring-boot

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

PointQuadTree

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));
   }

   ...

}
Run Code Online (Sandbox Code Playgroud)

边界

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;
   }

   ...
}
Run Code Online (Sandbox Code Playgroud)

我试过注释PointQuadTree@Component,但没有构造函数不带参数.即使我不加参数的构造Boundsfinal,所以它不能被设置后PointQuadTree进行初始化.还有Bounds一个只带参数的构造函数.

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

Jay*_*ram 7

这就像在Spring中创建bean一样简单......

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

}
Run Code Online (Sandbox Code Playgroud)

并将此bean注入您想要使用的位置 @Autowired

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