Spring @Configuration如何在地图中注入@Bean

时间:2018-02-07 04:04:10

标签: spring configuration

我使用Spring,我有以下bean声明

Catalog
    private Map<String, Product> products;

我想用@Configuration

声明bean

在我声明的java类中

@Bean(name="product_01")
    public Product product_01() {
        return new Product("0596009208","Head First Java","ea",new Float(26.07),22);
    }

现在我想声明bean目录为地图分配产品bean product_01。

这个初始化是对的吗?

@Bean(name="catalog")
    public Catalog catalog() {
            Catalog catalog1 = new Catalog();


            products.put(product_01().getSku(), product_01());

            catalog1.setProducts(products);

        return catalog1;
    }

创建bean目录时,我得到NullPointerException。

我想在地图产品中注入product_01。

2 个答案:

答案 0 :(得分:0)

两个选项。

1

@Bean(name="catalog")
public Catalog catalog(Product product_01) {
  products.put(product_01().getSku(), product_01());
}

2。正如@Deinum所说,你可以做到

@Autowired
private Map<String, Product> products;

在这种情况下,Spring将以名称为键

自动装配所有产品实例

答案 1 :(得分:0)

除了上面提到的内容之外,请务必在将语句products = new HashMap<String,Product>()作为示例之前初始化地图