Spring5学习——2IOC容器

Posted noti9j6s

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring5学习——2IOC容器相关的知识,希望对你有一定的参考价值。

一、概念

什么是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);
    }

以上是关于Spring5学习——2IOC容器的主要内容,如果未能解决你的问题,请参考以下文章

Spring_11-Spring5总结

Spring5源码解析1-从启动容器开始

spring5源码分析系列——spring核心容器体系结构

Spring5

Spring | Spring5学习笔记 #yyds干货盘点#

spring5