(3) Spring的组成
① Spring Core:核心容器,BeanFactory提供了组件生命周期的管理,组件的创建,装配,销毁等功能
SpringContext:ApplicationContext,扩展核心容器,提供事件处理、国际化等功能。它提供了一些企业级服务的功能,提供了JNDI,EJB,RMI的支持。
② Spring AOP:提供切面支持
③ Spring DAO:提供事务支持,JDBC,DAO支持
④ Spring ORM:对流行的O/R Mapping封装或支持
⑤ Spring Web:提供Web应用上下文,对Web开发提供功能上的支持,如请求,表单,异常等。
⑥ Spring Web MVC:全功能MVC框架,作用等同于Struts。
Spring可以对集合类型进行注入包括:Set集合,properties属性集合,Map集合以及List集合
注入方式如下:
package com.test; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.List; public class UserServiceImplement implements IUserService { public Set<String> getS() { return s; } public void setS(Set<String> s) { this.s = s; } public Map<String, String> getM() { return m; } public void setM(Map<String, String> m) { this.m = m; } public Properties getP() { return p; } public void setP(Properties p) { this.p = p; } public List<String> getL() { return l; } public void setL(List<String> l) { this.l = l; } private Set<String> s = new HashSet<String>(); private Map<String, String> m = new HashMap<String, String>(); private Properties p = new Properties(); private List<String> l = new ArrayList<String>(); public void saveUser() { System.out.println("Set集合注入"); for (String str : s) { System.out.println(str); } System.out.println("------------------------------"); System.out.println("Map集合注入"); for (String str : m.values()) { System.out.println(str); } System.out.println("------------------------------"); System.out.println("Properties属性集合注入"); for (Object str : p.values()) { System.out.println(str); } System.out.println("------------------------------"); System.out.println("List集合注入"); for (String str : l) { System.out.println(str); } } }要注意的是:这些集合属性也必须要有对应的setter方法
<?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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:annotation-config /> <bean id="userservice" class="com.test.UserServiceImplement"> <property name="s"> <set> <value>SetValue1</value> <value>SetValue2</value> <value>SetValue3</value> </set> </property> <property name="m"> <map> <entry key="MapKey1" value="MapValue1"></entry> <entry key="MapKey2" value="MapValue2"></entry> <entry key="MapKey3" value="MapValue3"></entry> </map> </property> <property name="p"> <props> <prop key="PropertiesKey1">PropertiesValue1</prop> <prop key="PropertiesKey2">PropertiesValue2</prop> <prop key="PropertiesKey3">PropertiesValue3</prop> </props> </property> <property name="l"> <list> <value>ListValue1</value> <value>ListValue2</value> <value>ListValue3</value> </list> </property> </bean> </beans>测试类:
package com.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext( "com/test/bean.xml"); IUserService us = (IUserService) ctx.getBean("userservice"); us.saveUser(); } }摘要: 我们常在Spring的Bean中注入各种基本类型的值和对象引用,如果需要注入List,Map,Set和数组等集合类型时,又该如何配置呢?
先定义一个测试类,由于本文将要介绍注入各种集合时如何配置,故这个类包含各种集合,类名和属性名不好取,没有特殊含义:
public class Test { private List<String> listTest; private Map<String, Object> mapTest; private Set setTest; private String[] arrayTest; private Properties propertiesTest; //下面是各个属性的setter,此处省略 //...... }Test类中,分别定义了List,Map,Set,Array等5种集合类型的属性,下面在Spring配置文件中,分别为这些类型的属性注入值:
<bean id="test" class="com.abc.Test"> <!-- List类型的属性 --> <property name="listTest"> <!-- 为list类型的属性注入值时,使用<list>元素 --> <list> <!-- 只要类型满足,每个<value>,<ref>,<bean>都可以配置一个list的元素 --> <value>ListA</value> <value>ListB</value> <value>ListC</value> </list> </property> <!-- Map类型的属性 --> <property name="mapTest"> <!-- 为map类型的属性注入值时,使用<map>元素 --> <map> <!-- 每一个<entry>都为<map>配置一个K-V对,同样, --> <entry key="key1" value="value1" /> <!-- 下面这个value指向了在此Spring文件中定义的另一个叫object的Bean --> <entry key="key2" value-ref="object" /> </map> </property> <!-- Set类型的属性 --> <property name="setTest"> <!-- 为set类型的属性注入值时,使用<set>元素 --> <set> <!-- 只要类型满足,每个<value>,<ref>,<bean>都可以配置一个list的元素 --> <value>SetA</value> <!-- 下面是一个嵌套Bean的定义。关于什么是嵌套Bean,请看:http://my.oschina.net/itblog/blog/204378 --> <bean class="com.abc.OtherBean1" /> <!-- 下面引用了此Spring文件中定义的另一个Bean --> <ref local="com.abc.OtherBean2" /> </set>转载于:https://www.cnblogs.com/panxuejun/p/5898526.html