gpt4 book ai didi

java - 如何将参数动态传递给 Spring bean

转载 作者:IT老高 更新时间:2023-10-28 13:50:47 24 4
gpt4 key购买 nike

我是 Spring 新手。

这是bean注册的代码:

<bean id="user" class="User_Imple"> </bean>
<bean id="userdeff" class="User"> </bean>

这是我的 bean 类:

public class User_Imple implements Master_interface {

private int id;
private User user; // here user is another class

public User_Imple() {
super();
}

public User_Imple(int id, User user) {
super();
this.id = id;
this.user = user;
}

// some extra functions here....
}

这是我执行操作的主要方法:

public static void main(String arg[]) {

ApplicationContext context = new ClassPathXmlApplicationContext("/bean.xml");
Master_interface master = (Master_interface)context.getBean("user");

// here is my some operations..
int id = ...
User user = ...

// here is where i want to get a Spring bean
User_Imple userImpl; //want Spring-managed bean created with above params
}

现在我想用参数调用这个构造函数,这些参数是在我的主要方法中动态生成的。这就是我想要动态传递的意思——而不是静态传递,就像在我的 bean.config 文件中声明的那样。

最佳答案

如果我猜对了,那么正确的答案是使用 getBean(String beanName, Object... args) 方法,该方法会将参数传递给 bean。我可以告诉你,它是如何为基于 Java 的配置完成的,但你必须了解它是如何为基于 XML 的配置完成的。

@Configuration
public class ApplicationConfiguration {

@Bean
@Scope("prototype") // As we want to create several beans with different args, right?
String hello(String name) {
return "Hello, " + name;
}
}

// and later in your application

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfiguration.class);
String helloCat = (String) context.getBean("hello", "Cat");
String helloDog = (String) context.getBean("hello", "Dog");

这就是你要找的东西吗?


更新

这个答案得到了太多的支持,没有人看我的评论。尽管它是问题的解决方案,但它被视为 Spring 反模式,您不应该使用它!有几种不同的方法可以使用工厂、查找方法等来正确处理事情。

请使用以下 SO 帖子作为引用:

关于java - 如何将参数动态传递给 Spring bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16997034/

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