SpringIOC学习笔记

63 阅读3分钟

这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战

IOC

什么是IOC?

(1)控制反转,把对象创建和对象之间的调用过程,交给Spring进行管理

(2)使用IOC目的:为了降低耦合度

IOC原理

(1)使用技术: xml解析、工厂模式、反射

image-20211115174741173

工厂模式

image-20211115175409135

xml解析+反射+工厂模式

image-20211115181332649

IOC接口

(1)IOC思想基于IOC容器完成,IOC容器底层就是对象工厂

(2)Spring提供了IOC容器实现的两种方式(两个接口)

BeanFactory:IOC容器基本实现,是Spring内部的使用接口,一般不提供给开发人员使用

加载配置文件的时候不会获取对象,在获取对象(使用)才去创建对象(懒加载)

ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员使用

加载配置文件的创建对象

ApplicationContext:实现类

image-20211115194142180

BeanFactory接口里几个重要方法

getBean:获取配置给SpringIOC的类

isSIngleton:判断是否为单例模式

isPrototype:为true,获取一个Bean,IOC容器就创建一个实例

getAliases:获取别名的方法(id是bean的唯一标识符号,若没有Id那么name为默认标识符号

如果配置了id又配置了name,那么name为别名,别名可以配置多个,这些别名用逗号、空格等隔开

还可以通过标签配置别名,name传入需要配置的bean的id或者name,alias为别名,同样可以是多个,用逗号或者空格隔开。)

代码

public static void main(String[] args) {
        // 1.加载spring配置文件
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:bean.xml");

        System.out.println(context.isSingleton("user"));

        System.out.println(context.isPrototype("user"));

        System.out.println(Arrays.toString(context.getAliases("user")));

        User user = (User) context.getBean("user");

        user.add();
    }

拓展:springIOC初始化(ApplicationContext)

image-20211115192259196

IOC操作Bean管理

  1. 什么是Bean管理

(1)Spring创建对象

(2)Spring注入属性

  1. Bean管理操作有两种方式

(1)基于xml配置文件方式实现

(2)基于注解方式实现

IOC操作Bean管理(基于xml)

1、基于xml方式创建对象

<!--配置创建User标签-->
<bean id="user" class="User" name="user2,test" ></bean>

(1) 在spring配置文件中,使用Bean标签,标签里面添加对应属性,就可以实现对象创建

​ **(2)**Bean标签常用属性

id属性:唯一标识

class属性:类全路径(包类路径)

​ **(3)**创建对象时候,默认也是执行无参构造方法完成对象创建

2、基于xml方式注入属性

**(1)**DI:依赖注入,就是注入属性 (先创建对象再注入属性)

​ 第一种注入方式:使用set方式进行注入

<!--set方法注入属性-->
<bean id="set" class="SetTest">
    <!--使用property完成属性注入
        name:类里面属性名称
        value:向属性注入的值
    -->
    <property name="name" value="测试"/>
</bean>

​ 第二种注入方式:使用有参构造器

<!--有参构造器注入属性-->
<bean id="set" class="SetTest">
    <constructor-arg name="name" value="有参构造器注入属性"/>
</bean>

3、p名称空间注入(底层还是set方法注入)

(1)使用p名称空间注入,可以简化基于XML配置方式

​ 第一步 添加p名称空间在配置文件中

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/p">

​ 第二步 进行属性注入,在Bean标签里面进行操作

<!--set方法注入属性-->
<bean id="set" class="SetTest" p:name="setTest"/>

参考内容

尚硅谷Spring5框架教程(idea版)