gpt4 book ai didi

java - 从 @Configuration 类中的一个方法创建多个 bean

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:40 25 4
gpt4 key购买 nike

我是 DI 的 Spring,使用 XML。

基于配置(例如 xml/properties 文件),我希望创建一些特定类型的 bean(具体数量由配置决定)以放入我的上下文中,以便它们可以 Autowiring 到类。

我会 Autowiring :@Autowired public MyClass(List<MyType> types)

我正在考虑使用一个用 @Configuration 注释的类.

所以我可以这样做:

@Configuration
public MyConfigurationClass {

@Autowired
public void configure(ApplicationContext context) {
// register stuff here
}
}

...但它“感觉”不对...

实现这一目标的“Spring”方法是什么?

编辑:

想象一下这段代码,其中 ToTy只是空的类定义。

@Configuration
public class Config {

@Bean
public Collection<Ty> tyList() {
return new ArrayList<Ty>() {{
this.add(new Ty()); // could be any number of Ty instances.
}};
}

@Bean
public To to(Collection<Ty> tylist) {
return new To();
}
}

最佳答案

如果您不需要单独的限定符并且可以 Autowiring 为列表,您可以在 Spring 4 中执行此操作:

@Configuration
public MyConfigurationClass {

@Bean
public List<MyType> configure() {
//create your dynamical list here
}
}

但是对于 Spring 3(泛型被忽略)你会更安全地使用:

@Configuration
public MyConfigurationClass {

@Bean
@Qualifier("mylist")
public List<MyType> configure() {
//create your dynamical list here
}
}

和 Autowiring :

@Autowired public MyClass(@Qualifier("mylist") List<MyType> types)

有了这个,你就不需要直接接触 ApplicationContext 实例了。这不是很好的做法。

编辑:

你试过这个吗?

@Configuration
public class Config {

@Bean
@Qualifier("tylist")
public Collection<Ty> tyList() {
return new ArrayList<Ty>() {{
this.add(new Ty()); // could be any number of Ty instances.
}};
}

@Bean
public To to(@Qualifier("tylist") Collection<Ty> tylist) {
return new To();
}
}

关于java - 从 @Configuration 类中的一个方法创建多个 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26738464/

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