这是我现在拥有的,效果很好。它所做的只是一个返回项目对象数组的市场类:
我有班级市场
class market {
public ArrayList<Items> createItems(HashMap<String,String> map) {
ArrayList<Items> array = new ArrayList<Items>();
for (Map.Entry<String, String> m : map.entrySet()) {
Item item = new Item();
item.setName(m.key());
item.setValue(m.value());
array.add(item);
}
return array;
}
}
类 Item 是一个简单的类,具有用于名称和值的 getter 和 setter
这是我的配置文件的外观:
@Configuration
public class MarketConfig {
@Bean
public Market market() {
return new Market();
}
}
我想如何更改我的代码:( 原因:我不想要
Item item = new Item();
在 then 方法中。我希望 Spring 将其注入市场)
class market {
public Item item;
//getters and setters for item
public ArrayList<Items> createItems(HashMap<String,String> map) {
ArrayList<Items> array = new ArrayList<Items>();
for (Map.Entry<String, String> m : map.entrySet()) {
item.setName(m.key());
item.setValue(m.value());
array.add(item);
}
return array;
}
}
@Configuration
public class MarketConfig {
@Bean
@Scope("prototype")
public Item item() {
return new Item();
}
@Bean
public Market market() {
Market bean = new Market();
bean.setItem(item());
}
}
我知道每次调用 item() 时原型作用域都会给我新的 bean;现在我想要 createItems 方法的 for 循环中的每次迭代都有新的 bean。我怎么能告诉春天给我。
我知道的一种方法是做
applicationContext context = new AnnotationConfigApplicationContext();
context.getBean(Item.class);
但是有没有其他方法可以完成我的工作。谢谢