您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
17-Spring配置文件-依赖注入7(map、list、properties类型注入)
发布时间:2024-12-20 12:08:15编辑:雪饮阅读()
-
上篇中主要是了解了通过Spring Config配置文件向类实例的普通属性注入值,那么其实也可以支持集合这种类型值的注入。
这里以List、Map、Properties为例。
首先我假定有一个User类
package com;
public class User {
private String name;
private String addr;
public void setName(String name) {
this.name = name;
}
public void setAddr(String addr) {
this.addr = addr;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", addr='" + addr + '\'' +
'}';
}
}
而我UserDao的实现中在map集合中map的key-val中的val部分就是该User对象实例
并且为了让List、Map、Properties能被注入,则需要实现setter方法,以及最后为了验证这3种类型数据的注入,则也需要打印这三种数据,所以在这里UserDao的实现如:
package com.dao.impl;
import com.User;
import com.dao.UserDao;
import java.util.List;
import java.util.Map;
import java.util.Properties;
public class UserDaoImpl implements UserDao {
private int age;
private String name;
private List<String> strList;
private Map<String, User> userMap;
private Properties properties;
public void setStrList(List<String> strList) {
this.strList = strList;
}
public void setUserMap(Map<String, User> userMap) {
this.userMap = userMap;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public UserDaoImpl(){
System.out.println("-----UserDaoImpl被创建--------");
}
public void save() {
System.out.println("-----UserDaoImpl save: name:"+name+",age:"+age);
System.out.println("-----UserDaoImpl save: strList:"+strList+",userMap:"+userMap+",properties:"+properties);
}
public void init(){
System.out.println("执行了init方法");
}
public void destroy(){
System.out.println("执行了destroy方法");
}
}
那么对于map集合的注入,首先我们需要在Spring Config配置中定义key-val中val部分由于是User的实例,所以在Spring Config中需要先有User实例,这里也以bean定义为例手动定义。
用标签嵌套到bean中
对于list集合,property=>list=>value,这样三个标签。
map则是property=>map=>entry(key属性与value-ref
(因为这里key-val的val部分是User实例是引用)指向bean定义的User实例id)
properties则是property=》props(key属性)=》值
那么完整的Spring Config配置则如:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="buser1" class="com.User">
<property name="name" value="user1"></property>
<property name="addr" value="shenzhen"></property>
</bean>
<bean id="buser2" class="com.User">
<property name="name" value="user2"></property>
<property name="addr" value="shanxi"></property>
</bean>
<bean id="userDao" class="com.dao.impl.UserDaoImpl">
<property name="name" value="zhangsan"></property>
<property name="age" value="18"></property>
<property name="strList">
<list>
<value>a</value>
<value>b</value>
<value>c</value>
</list>
</property>
<property name="userMap">
<map>
<entry key="mp_user1" value-ref="buser1"></entry>
<entry key="mp_user2" value-ref="buser2"></entry>
</map>
</property>
<property name="properties">
<props>
<prop key="key1">val1</prop>
<prop key="key2">val2</prop>
</props>
</property>
</bean>
<bean id="userService" class="com.service.impl.UserServiceImplement">
<constructor-arg name="userDao" ref="userDao"></constructor-arg>
</bean>
</beans>
关键字词:map,list,propertie,注入,spring