これが私が今持っているもので、うまく機能します。それが行うのは、アイテムオブジェクトの配列を返すマーケットクラスだけです。
クラスマーケットがあります
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;
}
}
class Itemは、名前と値にgetterとsetterを使用する単純なクラスです。
これが私の設定ファイルの外観です:
@Configuration
public class MarketConfig {
@Bean
public Market market() {
return new Market();
}
}
コードを変更したい方法:(理由:したくない
Item item = new Item();
その後の方法で。SpringにそれをMarketに注入してほしい)
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が必要です。どうすれば春に私に与えるように言うことができますか。
私が知っている1つの方法はDoです
applicationContext context = new AnnotationConfigApplicationContext();
context.getBean(Item.class);
しかし、私の仕事を成し遂げる他の方法はありますか。ありがとう