Spring怎么给Controller注入一个Map?

我想让Spring给controller注入一个Map<String, Object>,我应该怎么配置?

阅读 6.5k
3 个回答

谢谢邀请回答。
使用工厂bean可以实现,参考代码如下:

1:创建map的工厂bean

package com.blog.factory;
import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.FactoryBean;

/**
 * @author zl
 */
public class ConfigMapFactory implements FactoryBean<Map<String,Object>> {
    @Override
    public Map<String,Object> getObject() throws Exception {
        Map<String,Object> configMap = new HashMap<String,Object>();
        configMap.put("hello", "world");
        return configMap;
    }
    @Override
    public Class<?> getObjectType() {
        return Map.class;
    }
    
    @Override
    public boolean isSingleton() {
        return true;
    }
}

2:spring的配置文件中配置:

     <bean id="configMap" class="com.blog.factory.ConfigMapFactory"></bean>

3:controller层注入

@Controller
public class BlogController extends BaseController{
    
    @Autowired
    private CommentService commentService;
    
    @Autowired
    private BlogService blogService;
    
    @Resource(name="configMap")//这边需要使用Resource注解
    private Map<String,Object> configMap;
    
    @RequestMapping("/")
    public String index(Model model){
        System.out.println(configMap.get("hello"));//打印出world
        return "index";
    }
}

你配置个Java Bean哈 在吧Bean注入哈

依赖注入不是配置文件配置的嘛?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题