spring知识点

it2022-05-05  233

(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


最新回复(0)