gpt4 book ai didi

java - Spring:获取具有特定参数的原型(prototype) bean 实例

转载 作者:行者123 更新时间:2023-12-01 12:25:14 25 4
gpt4 key购买 nike

如果我有这样的 bean :

@Lazy
public class MyBean{
public MyBean(String argument){}

@Bean
@Scope("prototype")
public MyBean myBean(String argument){
return new MyBean(argument);
}
}

有没有办法通过 Provider 获取该 bean 的实例,如下所示:

@Component
public class MyOtherBean{
@Autowired
private javax.inject.Provider<MyBean> myBean;

public void operation(){
MyBean bean = myBean.get(); //I would like to pass argument in when getting the bean
}
}

我也在阅读@Lookup注释,因为它具有类似(或相同?)的效果,但我使用的是spring 3.1.1,我相信该注释尚未实现......
如果我在这里尝试做的事情不能以这种方式完成,您将如何实现这样的功能?
感谢您的帮助:)

最佳答案

ApplicationContext 为您提供了这种能力。

public class Test {
public static void main(String args[]) throws Exception {
ApplicationContext ctx = new AnnotationConfigApplicationContext(Factory.class);
// calls the @Bean factory method for the myBean bean with the argument provided
ctx.getBean("myBean", "first");
ctx.getBean("myBean", "second");
}
}

@Configuration
class Factory {
@Bean()
@Scope("prototype")
public MyBean myBean(String arg) {
return new MyBean(arg);
}
}

class MyBean {
public MyBean(String arg) {
System.out.println(arg);
}
}

关于java - Spring:获取具有特定参数的原型(prototype) bean 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26407666/

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