<?xml version="1.0" encoding="UTF-8"?>
-<beans xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd " xmlns:p="http://www.springframework.org/schema/p" xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- IOC:Inverse of Control,控制反转将我们创建对象的方式反转了以前对象的创建是由我们开发人员自己维护的,包括依赖关系也是自己注入的使用Spring之后,对象的创建以及依赖关系可以由Spring完成创建以及注入反转控制就是反转了对象的创建方式,从我们自己创建反转给了程序(Spring)
DI:Dependency Injection,依赖注入实现IOC思想需要DI支持注入方式: set方式注入(掌握)
构造方法注入(掌握)
P名称空间注入(了解)
spel表达式注入(了解)
注入类型:值类型注入8大基本数据类型引用类型注入,将依赖对象注入 -->
<!-- 通过set方法注入(掌握) 使用property标签进行注入注入基本数据类型使用value 注入引用类型是使用ref -->
-<bean class="com.uc.pojo.User" name="user">
<property name="username" value="萧炎"/>
<property name="sex" value="男"/>
<property name="age" value="18"/>
<property name="car" ref="car"/>
</bean>
-<bean class="com.uc.pojo.Car" name="car">
<property name="name" value="紫晶翼狮王"/>
<property name="color" value="水晶紫"/>
</bean>
<!-- 通过构造方法注入(掌握)name属性:构造函数的参数名 index属性:构造函数的参数索引 type属性:构造函数的参数类型 -->
-<bean class="com.uc.pojo.User" name="user2">
<constructor-arg name="car" ref="car"/>
<constructor-arg name="username" value="熏儿"/>
</bean>
<!-- p名称空间注入(了解)也是通过set方法 1、导入P名称空间:xmlns:p="http://www.springframework.org/schema/p"2、使用P:属性完成注入值类型,P:属性名="值" 对象类型,P:属性名-ref="bean的名称" -->
<bean class="com.uc.pojo.User" name="user3" p:car-ref="car" p:username="小医仙"> </bean>
<!-- spel表达式注入(了解) Spring expression language,Spring 表达式语言可以引用其他对象的值,(了解) -->
-<bean class="com.uc.pojo.User" name="user4">
<property name="username" value="#{user3.username}"/>
<property name="car" ref="car"/>
</bean>
<!-- 复杂类型注入 -->
<bean class="com.uc.pojo.Mycollection" name="collection"/>
-<bean>
<!-- 注入数组类型 -->
-<property name="arr">
-<array>
<value>云韵</value>
<value>云山</value>
<value>纳兰嫣然</value>
</array>
</property>
<!-- 注入List类型 -->
-<property name="list">
-<list>
<value>云山是萧炎的儿子</value>
<value>纳兰嫣然是云山的三姨太</value>
</list>
</property>
-<property name="map">
-<map>
<!-- key为String,value为String -->
<entry value="萧战" key="name"/>
<!-- key为对象,value为对象 -->
<entry value-ref="user2" key-ref="user"/>
</map>
</property>
<!-- 注入properties类型 -->
-<property name="ps">
-<props>
<prop key="name">古河</prop>
<prop key="age">300</prop>
<prop key="sex">男</prop>
</props>
</property>
</bean>
</beans>
package com.uc.pojo;
public class Car {
private String name;
private String color;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
@Override
public String toString() {
return "Car [name=" + name + ", color=" + color + "]";
}
}
package com.uc.pojo;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
public class Mycollection {
private Object[] arr;
private List list;
private Map map;
private Properties ps;
public Object[] getArr() {
return arr;
}
public void setArr(Object[] arr) {
this.arr = arr;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
public Properties getPs() {
return ps;
}
public void setPs(Properties ps) {
this.ps = ps;
}
@Override
public String toString() {
return "Mycollection [arr=" + Arrays.toString(arr) + ", list=" + list + ", map=" + map + ", ps=" + ps + "]";
}
}
package com.uc.pojo;
public class User {
private String username;
private String sex;
private int age;
private Car car;
public User(){
}
//构造一:User(String username,Car car)
public User(String username,Car car){
System.out.println("User(String username,Car car)");
this.username=username;
this.car=car;
}
//构造二: User(Car car,String username)
public User(Car car,String username){
System.out.println("User(Car car,String username)");
this.username=username;
this.car=car;
}
//构造三: User(Car car,Integer username)
public User(Car car,Integer username){
System.out.println("User(Car car,Integer username)");
this.username=username+"";
this.car=car;
}
public User(String username,String sex,int age){
this.username=username;
this.sex=sex;
this.age=age;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
System.out.println(car.getName()+ "被注入s进来");
this.car = car;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [username=" + username + ", sex=" + sex + ", age=" + age + ", car=" + car + "]";
}
}
package com.uc.test;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import com.uc.pojo.Mycollection;
import com.uc.pojo.User;
public class SpringJieShao {
@Test // 测试通过set方法注入
public void testbean() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User) applicationContext.getBean("user");
System.out.println(user);
}
@Test // 测试通过构造方法注入
public void testbean2() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User) applicationContext.getBean("user2");
System.out.println(user);
}
@Test // 测试通过P名称空间注入
public void testbean3() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User) applicationContext.getBean("user3");
System.out.println(user);
}
@Test // 测试通过spel注入
public void testbean4() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = (User) applicationContext.getBean("user4");
System.out.println(user);
}
@Test // 测试复杂类型,数组类型arr
public void testbean5() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Mycollection collection = (Mycollection) applicationContext.getBean("collection");
System.out.println(collection);
}
@Test // 测试复杂类型,List类型list
public void testbean6() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Mycollection collection = (Mycollection) applicationContext.getBean("collection");
System.out.println(collection);
}
}