SpringIOC/DI概述

目录

Spring概述

Spring框架基本理解

Spring框架由七个模块组成:

Spring两大核心思想:

SpringIOC

对SpringIOC容器的理解

什么是Spring的Bean

SpringIOC使用步骤:

Spring DI

Spring概述

Spring框架基本理解

Spring 框架是一款轻量级的开发框架,核心思想是 IOC(控制反转)和 AOP(面向切面编程)为 Java 应用程序开发提供组件管理服,用于组件之间的解耦,以及简化第三方 JavaEE中间件技术的使用( JMS、任务调度、缓存、ORM 框架),是一个基础架构型的开发框架;Spring框架包括:I0C 容器、Validation 数据校验、AOP 面向切面编程、Transactions 事 务管理、SpringJDBc、Spring Mvc 框架、以及各类第三方 JavaEE 中间件技术集成;

Spring框架由七个模块组成:

  1. Spring Core: 这是Spring的基础核心模块,提供依赖注入(Dependency Injection, DI)容器、AOP(Aspect Oriented Programming,切面编程)以及基本的配置支持。

  2. Spring Beans: 它定义了Bean的概念,即可配置的对象,使得对象的创建、管理变得方便,并通过IoC(Inversion of Control,控制反转)实现了松耦合。

  3. Spring MVC: 主要用于web应用程序,提供模型-视图-控制器(Model-View-Controller, MVC)架构的支持,简化了HTTP请求的处理和页面展示的逻辑。

  4. Spring Data: 提供对多种数据库的抽象层,包括JPA(Java Persistence API)、Hibernate等,简化数据访问操作。

  5. Spring Security: 用于安全管理,可以轻松集成到项目中,提供认证、授权等功能。

  6. Spring Boot: 是Spring的一个子集,包含了启动模板和自动配置,简化新项目的搭建过程。

  7. Spring Cloud: 集成了微服务架构所需的一些组件,如配置中心、负载均衡、断路器等,支持分布式系统的构建。

Spring Framework 根据官方文档的描述,主要包括以下常用5 个模块:

  1. Core:核心模块
  2. Testing:测试模块
  3. Data Access:数据访问模块
  4. Web Servlet:基于Servlet的Web应用开发
  5. Integration:企业级系统集成模块(不同系统之间的交互集成)

Spring两大核心思想:

        一.springIOC(控制反转)springDI(依赖注入) ​

        二.springAOP(面向切面)

SpringIOC

        IOC( Inversion of Control,中文释义:控制反转 ) 是Spring框架的核心思想之一,主要用于解耦。IOC是指将创建对象的控制权转移给Spring框架进行管理。

        控制 :指的是对象创建(实例化、管理)的权力

        反转 :控制权交给外部环境(Spring框架、IoC容器)

        由Spring框架根据配置文件或注解等方式,创建bean对象并管理各个bean对象之间的依赖关系。 使对象之间形成松散耦合的关系,实现解耦;

对SpringIOC容器的理解

        IOC 通常被理解为 IOC Container 容器,IOC 容器其实就是一个 Map,key 是每个 bean 对象的ID,value是 bean 对象本身。IOC 容器负责创建 bean 对象并管理 bean 的生命周期。并且根据配置好配置文件或注解,管理 IOC 容器中的每个 bean ,以及根据 bean 之间的依赖关系,完成 bean 之间的注入。

        IOC 容器属于 Spring core 模块,用来创建和管理 Bean,默认使用单例的方式将 bean 存储在DefaultListableBeanFactory类的beanDefinitionMap 中(-个 ConcurrentHashMap 类型的Map集合);

        IOC 容器使用 ConcurrentHashMap 集合存储了 BeanDefinition 对象,该对象封装了Spring对 一个 Bean 所有配置信息,包括: 类名,属性,构造方法参数,依赖,是否延迟加载,是否是单例等配置信息。

什么是Spring的Bean

简单来说,Bean 代表被 IoC 容器管理的对象。我们通过配置文件或注解,告诉IOC容器帮助我们管理哪些对象。

Bean创建的三种方式

SpringIOC使用步骤:

1.创建实体类和Spring的xml配置文件

//这是一个简单的实体类
public class Student {
    private String stuName;
    private String hobby;
    private int age;

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Student(String stuName, String hobby, int age) {
        this.stuName = stuName;
        this.hobby = hobby;
        this.age = age;
    }

    public Student() {
    }

    public Student(String stuName, String hobby) {
        this.stuName = stuName;
        this.hobby = hobby;
    }

    @Override
    public String toString() {
        return "Student{" +
                "stuName='" + stuName + '\'' +
                ", hobby='" + hobby + '\'' +
                '}';
    }
}

2.将需要Spring管理的类,注入SpringIOC容器

<?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 http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="student" class="com.pojo.Student"></bean>
</beans>

3.以解耦方式获取javaBean实例对象

public class Test01 {
    public static void main(String[] args) {
        //加载Spring主配置文件,获取Spring核心对象
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
        //通过getBean方法获取javaBean
        Student student = (Student) applicationContext.getBean("student");
        System.out.println(student);
    }
}

Spring DI

DI(Dependecy Inject,中文释义:依赖注入)是对IOC概念的不同角度的描述,是指应用程序在运行时,每一个bean对象都依赖IOC容器 ​ 注入当前bean对象所需要的另外一个bean对象。(例如在MyBatis整合Spring时,SqlSessionFactoryBean 依赖IOC容器注入一个 ​ DataSource数据源bean)。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值