初识Sprig

来源:互联网 发布:王思远她抄袭知乎 编辑:程序博客网 时间:2024/06/05 09:47

Spring是一个轻量级额的控制反转和面向切面的容器框架。

Spring的特点:1、轻量(非入侵式)2、控制反转(Inversion of Control)3、面向切面(AOP)4、容器5、框架

核心机制:依赖注入

通常由调用者来创建被调用者的实例(比如说武士使用剑,武士就依赖于剑),在Spring里,创建被调用者由Spring容器来完成(因此称为控制反转),然后注入调用者(因此称为依赖注入)。

注入的方式有两种:设值注入(采用setter方法) 和 构造注入

设值注入有 1、8中基本属性 和 String 2、数组 3、集合 

下面是一个例子

package com.test;import java.util.List;import java.util.Map;import java.util.Set;public class User {//基本数据类型private String name;//引用类型private Bow bow;//集合private Address [] addr;private List list;private Set set;private Map map;public String getName() {return name;}public void setName(String name) {this.name = name;}public Bow getBow() {return bow;}public void setBow(Bow bow) {this.bow = bow;}public Address[] getAddr() {return addr;}public void setAddr(Address[] addr) {this.addr = addr;}public List getList() {return list;}public void setList(List list) {this.list = list;}public Set getSet() {return set;}public void setSet(Set set) {this.set = set;}public Map getMap() {return map;}public void setMap(Map map) {this.map = map;}}


必须提供setter 和getter 方法

package com.test;public class Bow {//user 可以使用武器private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}}


 

package com.test;public class Address {//user的地址private String street;public String getStreet() {return street;}public void setStreet(String street) {this.street = street;}}


 

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="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-2.0.xsd"><bean id="user" class="com.test.User"><!-- 基本类型 --><property name="name" value="cl"/><!-- 引用 --><property name="bow" ref="bow" /><!-- 集合 数组 --><property name="addr"><list><ref bean="addr1"/><ref bean="addr2"/><ref bean="addr3"/></list></property><!-- 集合 list --><property name="list"><list><ref bean="addr1"/><ref bean="addr2"/><ref bean="addr3"/><value type="java.lang.Integer">11</value><value type="java.lang.Integer">11</value></list></property><!-- 集合 set --><property name="set"><set><ref bean="addr1"/><ref bean="addr2"/><ref bean="addr3"/><value type="java.lang.Integer">11</value><value type="java.lang.Integer">12</value></set></property><!-- 集合 map --><property name="map"><map><entry key="1" value="1" /><entry key="2" value="2" /><entry key="3" value="3" /><entry key="4" value-ref="addr1"/></map></property></bean><!-- 引用 --><bean id="bow" class="com.test.Bow"><property name="name" value="弓箭" /></bean><!-- 数组 --><bean id="addr1" class="com.test.Address"><property name="street" value="中山路" /></bean><bean id="addr2" class="com.test.Address"><property name="street" value="南昌路" /></bean><bean id="addr3" class="com.test.Address"><property name="street" value="瑞京路" /></bean></beans>


 

package com.test;import java.util.List;import java.util.Map;import java.util.Set;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.context.support.FileSystemXmlApplicationContext;/** * 测试类 * */public class Test {public static void main(String[] args) {//使用Spring的IocApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");//ApplicationContext context = new FileSystemXmlApplicationContext("src/applicationContext.xml");User hello = (User)context.getBean("user");//hello.setStr("this is Helloword!!--");System.out.println(hello.getBow().getName());//取数组System.out.println("******取数组******");Address addr[] = hello.getAddr();for(int i=0;i<addr.length;i++)System.out.println(addr[i].getStreet());//取listSystem.out.println("******取list******");List list = hello.getList();for(Object out:list){if(out.getClass()==Integer.class)System.out.println(out);elseSystem.out.println(((Address)out).getStreet());}//取setSystem.out.println("******取set******");Set set = hello.getSet();for(Object out:set){if(out.getClass()==Integer.class)System.out.println(out);elseSystem.out.println(((Address)out).getStreet());}//取mapSystem.out.println("******取map******");Map<String,Object> map = hello.getMap();for(String out:map.keySet()){if(map.get(out).getClass()==String.class)System.out.println(out + "=" + map.get(out));elseSystem.out.println(((Address)map.get(out)).getStreet());}}}


 

原创粉丝点击