美文网首页
107、【JavaEE】【Spring】Spring IoC

107、【JavaEE】【Spring】Spring IoC

作者: yscyber | 来源:发表于2021-10-23 21:16 被阅读0次

1、概述

  • 控制反转(Inverse of Control,IoC)不是什么技术,而是一种设计思想。它的目的是指导设计出更加松耦合的程序。

控制:在 Java 中指的是对象的控制权限(创建、销毁等)

反转:指的是对象控制权由原来由开发者在类中手动控制反转到 Spring 容器(IoC 容器)控制

Spring-3

2、Spring IoC 简单举例

  • 1、引入 Maven 依赖
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.8</version>
</dependency>

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
  • 2、编写接口和实现类
public interface UserRepo {

    Integer deleteUserById(Integer id);
    
}
import com.yscyber.spring.one.repo.UserRepo;

public class UserRepoImpl implements UserRepo {

    @Override
    public Integer deleteUserById(Integer id) {
        System.out.println("删除用户······");
        return 1;
    }

}
  • 3、在resources目录下,创建 Spring 核心配置文件,src/main/resources/applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
    
</beans>
  • 4、在applicationContext.xml中配置 Bean
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="userRepo" class="com.yscyber.spring.one.repo.impl.UserRepoImpl"/>

</beans>
  • 5、使用 Spring 的 API 获取UserRepo的实例(从 IoC 容器中获取对象实例)
    @Test
    public void test1() {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");

        UserRepo userRepo = (UserRepo) applicationContext.getBean("userRepo");

        userRepo.deleteUserById(1);
    }

3、Spring 一些比较重要的 API

Spring-4
  • org.springframework.beans.factory.BeanFactory接口是 IoC 容器的核心接口,其中定义了 IoC 的基本功能。

  • org.springframework.context.ApplicationContext接口,应用上下文接口。在 Spring 容器启动时,加载并创建所有对象的实例。

Spring-5 Spring-6

4、Spring 核心配置文件

  • Spring 核心配置文件的基本功能是在其中配置需要交给 Spring 容器(IoC 容器)管理的类。

  • <bean>标签

基于反射机制创建出类的对象(实例),默认情况下“借助”类的“无参构造”

Spring-7
  • 由 Spring 容器管理的对象的作用域
Spring-8 Spring-9
  • 由 Spring 容器管理的对象的生命周期
Spring-10

5、Spring 容器实例化对象的方式

5.1、无参构造

Spring-11

5.2、工厂 静态方法

Spring-12

5.3、工厂 普通方法

Spring-13

6、依赖注入

  • 依赖注入(Dependency Injection,DI),是 IoC 的具体实现。

  • 既然将对象交给 Spring 容器去管理,那么“获取”自然也得通过 Spring 容器。“依赖注入”简单理解就是由 Spring 容器对变量“赋值”(给对象中的成员变量赋值)。

6.1、依赖注入的方式

  • 1、有参构造
Spring-14
  • 2、setter
Spring-15
  • 3、P 命名空间
Spring-16

6.2、不同数据类型的依赖注入

  • 1、注入普通数据类型
Spring-17
  • 2、注入引用数据类型
Spring-15
  • 3、注入集合数据类型
Spring-18 Spring-19 Spring-20

相关文章

网友评论

      本文标题:107、【JavaEE】【Spring】Spring IoC

      本文链接:https://www.haomeiwen.com/subject/ohflaltx.html