Spring注入-Map

在spring框架中为Map注入属性

1map映射的对象创建

package com;

/**
 * Map集合在spring中的使用测试
 */
public class User {
    private int id;
    private String name;
    private String pwd;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    @Override
    public String toString() {
        return "User[id=" + id + ", name=" + name + ", pwd=" + pwd + "]";
    }
    public User(int id, String name, String pwd) {
        super();
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }
    public User() {
        super();
        // TODO Auto-generated constructor stub
    }
}

2.Map的使用者

package com;

import java.util.Map;

/**
 * Map 集合在spring框架中的使用测试
 */
public class MapDemo {
    private int id;
    private String name;
    private String pwd;
    private Map<String,User> user;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public Map<String, User> getUser() {
        return user;
    }

    public void setUser(Map<String, User> user) {
        this.user = user;
    }

    @Override
    public String toString() {
        return "MapDemo [id=" + id + ", name=" + name + ", pwd=" + pwd + ", user="
                + user + "]";
    }
    public MapDemo() {
        super();
        // TODO Auto-generated constructor stub
    }
    public MapDemo(int id, String name, String pwd, Map<String, User> user) {
        super();
        this.id = id;
        this.name = name;
        this.pwd = pwd;
        this.user = user;
    }
}

3.配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <bean id="user1" class="com.User">
        <property name="id" value="1"></property>
        <property name="name" value="name1"></property>
        <property name="pwd" value="pwd1"></property>
    </bean>
    <bean id="user2" class="com.User">
        <property name="id" value="2"></property>
        <property name="name" value="name2"></property>
        <property name="pwd" value="pwd2"></property>
    </bean>
    <bean id="user3" class="com.User">
        <property name="id" value="3"></property>
        <property name="name" value="name3"></property>
        <property name="pwd" value="pwd3"></property>
    </bean>
    <!-- map集合的注入 -->
    <util:map id="user">
        <entry key="1" value-ref="user1" />
        <entry key="2" value-ref="user2"/>
        <entry key="2" value-ref="user3"/>
    </util:map>
    <bean id="mapDemo" class="com.MapDemo">
        <property name="id"  value="001"/>
        <property name="name"  value="tom"/>
        <property name="pwd"  value="123456"/>
        <!--   把User类涉及到Demo2类中-->
        <property name="user" ref="user"/>
    </bean>
</beans>

4.测试代码

package test;

import com.MapDemo;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Created by Administrator on 2016/12/4.
 */
public class MapDemoTest {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext cx=new ClassPathXmlApplicationContext("demo1.xml");
        MapDemo mapDemo=(MapDemo) cx.getBean("mapDemo");
        System.out.println(mapDemo);
    }
}

备注:在测试的时候出了一个问题。因为有修改过User的类名。所以在MapDemo中也同步替换了属性名和方法名,但是在注入的时候一直失败。提示user的问题。

解决:删除set、get,重新生成。

时间: 2024-12-04 21:24:06

Spring注入-Map的相关文章

spring @Autowired注入map

注入map,平常一般不会这么做,今天看一段老代码时发现有这么个用法.补习一下. @Autowired 标注作用于 Map 类型时,如果 Map 的 key 为 String 类型,则 Spring 会将容器中所有类型符合 Map 的 value 对应的类型的 Bean 增加进来,用 Bean 的 id 或 name 作为 Map 的 key. 原文地址:https://www.cnblogs.com/zhjh256/p/11179678.html

spring @Autowired map

注入map,平常一般不会这么做,今天在写一个demo时,有如下一段注入代码: map bean 的创建 @Bean(name="userMap") public Map<Long, User> userMap() {     return new ConcurrentHashMap<Long, User>(); } // 注入 @Autowired @Qualifier("userMap") private Map<Long, User

17_8_9 Spring 注入

1 Spring 的 Bean 的属性注入: 构造方法的方式注入属性: <!-- 第一种:构造方法的方式 --> <bean id="car" class="cn.itcast.spring.demo4.Car"> <constructor-arg name="name" value="保时捷"/> <constructor-arg name="price" val

SSH框架系列:Spring读取配置文件以及获取Spring注入的Bean

分类: [java]2013-12-09 16:29 1020人阅读 评论(0) 收藏 举报 1.简介 在SSH框架下,假设我们将配置文件放在项目的src/datasource.properties路径下,Spring的配置文件也是src/applicationContext.xml路径下,那么我们可以借助Spring的property-placeholder读取配置文件,然后注入Bean中.我们在程序中,可以根据Bean的Id,获取注入的值.这样我们就可以借助Spring来读取配置文件. 2.

JSP 获取Spring 注入对象

<%@ page import="org.springframework.web.context.support.WebApplicationContextUtils"%> <%@ page import="org.springframework.context.ApplicationContext"%> ServletContext sc = this.getServletConfig().getServletContext(); Appl

Spring注入aspectJ切面

1.用关键字aspect即可声明一个切面如:                    切面定义完毕,可以发现,pointcut被当做一个类型,指定切点还是用execution表达式:after()和returning()也被当做一个类型来声明一个通知 2.在JudgeAspect中有一个CriticismEngine类型的成员变量,为了实现对象间的松耦合,我们在aspectJ中使用Spring的依赖注入来为JudgeAspect注入CriticismEngine对象.首先将CriticismEng

spring注入与代理对象两个对象

[INFO ] 2015-05-18 15:44:37:124 [com.yjm.dao.CommonDAO] - CommonDAO...初始化... [INFO ] 2015-05-18 15:44:37:137 [com.yjm.service.FoodService] - FoodService...初始化...18794463 [email protected] [INFO ] 2015-05-18 15:44:37:336 [com.yjm.service.FoodService] 

Spring注入之注解

繁琐的xml配置有时候让人感到烦躁,而Spring支持的注解配置简化了bean的配置. 所以spring可以使用annotation进行主动注入以及自动检测bean. <!--启用注解 --> <context:annotation-config></context:annotation-config> <!-- 自动检测pojo类为spring中的bean+启用注解 ,有了这个就可以不用配置--> <context:component-scan ba

JSP中使用Spring注入的Bean时需要注意的地方

遇到问题 遇到一个问题:在JSP中,使用Spring注入的Bean对象时,未能正确地获取到想要的对象. 郁闷的是,它也没报错. 研究问题 使用DEBUG功能(好久不在JSP里写Java代码了,都忘了JSP也可以打断点调试),跟踪了一下代码,发现确实有了我想使用的类的实例,不过是个代理类. 想到反射.代理相关的知识,貌似知道问题在哪了. 赶紧试了一下,果然…… 解决 在JSP里你要获得的Bean对象的类型,要定义成接口类,而不是实现类. 当然,这也视情况而定,我不确定,在JSP里使用Spring注