当前位置: 首页 > 知识库问答 >
问题:

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

冯敏达
2023-03-14
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初始化之后,我需要将其放置在内存中,并且需要能够在其他组件中自动连接它以读取/删除/添加项。我不知道怎么用Spring靴做这件事。非常感谢任何帮助。

共有1个答案

祁嘉言
2023-03-14

这就像用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

 类似资料:
  • 问题内容: 我有两个班,第一个是我的主班,第二个是我的编辑框架班。 我的第二个类(UpdateGUI)在其构造函数中提供oldName,并对其进行编辑,当我单击时,它将newName发送给我的第一个类。 我的第二堂课: 我的问题是,为什么newName为null? 更新: UpdateGUIDialog类: 输出: 我需要打印而不是null。 问题答案: Java对象有点像真实对象。并顾名思义:它

  • 我想在构造函数中初始化二维数组。但是,我在类中声明数组的实例变量时遇到了一个问题。如果我这样做就错了: 我怎么解决这个问题?

  • 主要内容:初始化 const 成员变量构造函数的一项重要功能是对成员变量进行初始化,为了达到这个目的,可以在构造函数的函数体中对成员变量一一赋值,还可以采用 初始化列表。 C++构造函数的初始化列表使得代码更加简洁,请看下面的例子: 运行结果: 小明的年龄是15,成绩是92.5 李华的年龄是16,成绩是96 如本例所示,定义构造函数时并没有在函数体中对成员变量一一赋值,其函数体为空(当然也可以有其他语句),而是在函数首部与函数体之间添

  • 映射对构造函数没有限制或要求 (__init__ )类的方法。您可以自由地为您想要的函数要求任何参数,为ORM未知的实例分配属性,并且通常在编写Python类的构造函数时做您通常会做的任何其他事情。 sqlAlchemy ORM不调用 __init__ 从数据库行重新创建对象时。ORM的过程有点类似于Python标准库的 pickle 模块,调用低级 __new__ 方法,然后在实例上悄悄地恢复属

  • 问题内容: 在Java中,以以下方式初始化String数组是完全合法的: 但是,当尝试实例化以String数组作为参数的类时,不允许以下代码: 但这再次起作用: 有人可以解释为什么吗? 问题答案: String[] s = {“FOO”, “BAR”}; 仅在声明时允许 你不能

  • 问题内容: 我有这个类的构造函数: 问题是,我想创建此类的数组,如何对其进行初始化? 不起作用。 更新 我需要做这样的事情吗? 然后初始化每个对象? 问题答案: 在创建数组时,您正在创建类别数组。那是数组的一个实例。 当用Category对象填充数组时,此时将使用带有Const的Category。