一、概念

什么是IOC
(1)管制反转,把对象的创立和调用过程交给Spring进行治理
(2)应用目标:升高耦合度

底层原理
(1)xml解析
(2)工厂模式
(3)反射

反射创建对象

class ObjectFactory{    public satic Object getObject(){        String classvalue = class属性值; //xml解析        Class clazz = Class.forName(classValue);        return (Object)clazz.newInstance();    }}

IOC接口
(1)BeanFactory:是Spring外部的应用接口 【加载配置文件时不会创建对象,在获取对象时创立】
(2)ApplicationContext:BeanFactory的子接口,提供更弱小的性能 【加载配置文件时就会创建对象】
Ⅰ、ClassPathXmlApplicationContext("src下类门路")
Ⅱ、FileSystemXmlApplicationContext("系统盘门路")

Bean治理
(1)Spring创建对象 【反射形式创建对象时,默认采纳无参数构造方法】
(2)Spring注入属性

基于xml形式
(1)创建对象

    <!--    id:实例化对象的惟一标识;  class:类的全门路     -->    <bean id="user" class="com.dk.entity.User"></bean>

(2)注入属性 【依赖注入 DI-Dependence Injection】

    <!--    id:实例化对象的惟一标识;  class:类的全门路     -->    <bean id="user" class="com.dk.entity.User">        <!--调用set办法进行属性注入:name示意属性名称,value示意属性值-->        <property name="name" value="LiHui"></property>        <property name="age" value="25"></property>    </bean>
    <!--调用有参构造方法进行属性注入-->    <bean id="user2" class="com.dk.entity.User">        <constructor-arg name="name" value="Zhang"></constructor-arg>        <constructor-arg name="age" value="18"></constructor-arg>    </bean>
<!--级联注入-->    <bean id="school" class="spring.service.ba01.school">        <property name="name" value="清华"/>        <property name="address" value="北京"/>    </bean>        <bean id="student" class="spring.service.ba01.student">        <property name="name" value="张三"/>        <property name="school" ref="school"/>    </bean>
<!--汇合属性注入-->    <property name="list">            <list>                <value>a</value>                <value>b</value>                <value>c</value>            </list>        </property>                <property name="map">            <map>                <entry key="a" value="aaa"></entry>                <entry key="b" value="bbb"></entry>            </map>        </property>        <property name="set">            <set>                <value>1</value>                <value>2</value>                <value>1</value>            </set>    </property>

(3)获取bean对象

    public static void main(String[] args) {        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");        Object user = context.getBean("user");        System.out.println(user);    }