gpt4 book ai didi

java - 如何创建需要动态参数的对象

转载 作者:搜寻专家 更新时间:2023-11-01 01:27:58 26 4
gpt4 key购买 nike

从第一天开始使用spring,我就一直有一个疑问。如果一个类有一个构造函数需要两个参数,但是这两个参数不是固定的,是根据输入请求生成的,每次都不一样,但是我需要spring容器来管理这个类的实例,spring怎么实现?例如

    Class A{
A(int x,int y){//omit}
}

但是x,y是不固定的,我们需要通过程序计算出x和y,然后我们就可以在普通的java代码中为A创建实例,如下所示

    int x=calculate(request);
int y=calculate(request);
A a=new A(x,y);

但是如何让spring管理类A的实例创建呢?

附加信息:为什么我需要A类是由spring管理的,因为A依赖于一些其他由spring管理的类。

最佳答案

  • 最直接的方法是使用 ApplicationContext.getBean(String name, Object... args) - 它可以创建一个 prototype -scoped bean 将给定的参数传递给它的构造函数。显然使用 ApplicationContext 不是一个好主意。直接在任何使用 A 的 bean 中.

  • 一个更优雅的方法是隐藏 A 的创建一个工厂后面。该工厂可以在内部使用以前的方法,或者它可以以常规方式( Provider<A> 等)获取 bean 的实例,然后调用非 public 的实例。传递该参数的初始化方法(而不是通过使用构造函数传递参数)。

  • 还有一个方法是使用 @Configurable and load-time weaving允许 Spring 初始化使用 new 创建的对象.虽然它需要一些额外的运行环境配置。

关于java - 如何创建需要动态参数的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12354975/

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