很早就在学习Spring,但是发现很多东西没有深入挖掘,很多知识点,看过之后当时貌似懂了,但是过段时间一点都不会用了,所以打算系统学习下顺表整理出来,以备以后重新回顾。
本篇主要探讨以下问题:
一:IOC和DI到底是什么?
二:IOC能够解决什么样的问题?
三:IOC由哪些模块组成?
四:学习Spring Resource和ResourceLoader以及资源加载模式ant匹配
五:学习BeanFactory和ApplicationContext以及BeanFactory和ApplicationContext的Bean生命周期
六:Spring三种装配Bean的方式 XML、基于注解、基于JAVA类
七:Spring Bean的作用域,单例的DAO如何保证线程安全
八:Spring IOC如何解决Bean循环依赖的问题?
九:如何实现一个Spring IOC容器?
一:IOC和DI到底是什么?
其实理解了发现是个很简单的概念,可是配上这些高大上的名词,瞬间有点让人头晕。关键是理解了转化成自己的语言,下次一看,原来就是这样。先看个简单的例子(假设A接口依赖B接口):
// 通常做法
A {
B b = new BImpl();
}
// Spring 做法
A {
B b;
public void setB(B b) {
}
}
第二种情况B的具体类由Spring IOC注入到方法中,这个其实咋一看和我们使用的工厂模式没有什么区别。其实区别在于这里B b是由Spring容器注入进去的,我们的方法是通过我们手动的,一个是自动的,一个是手动的。
// 我们的使用方式
main() {
A a = new A().setB(BeanFactory.createBeanB)
}
// Spring的方式 配置好之后,运行时候自动注入Bean了,思考它是怎么做到的呢?
// 我的大致思路,启动时,Spring一个线程读取资源文件,创建Bean和依赖的Bean属性。
我们现在应该对IOC有个大概的理解了吧,现在我们再来谈谈IOC和DI这两个概念。
IOC(控制反转):谁控制谁,控制什么? 通常,我们的程序来控制对象的创建,但是在IOC中对象的创建是由Spring容器来控制统一创建的。
反转:既有反转,当然亦有正转。正转的含义,程序主动的控制对象的创建。反转的含义,程序只能被动的等待Spring 容易来注入对象。
DI(Dependency Injection):其实是在发现IOC不能很好表现初Spring容器处理的依赖关系,所以才出了依赖注入这个名词。
二:IOC能够解决什么样的问题?
我觉得有一下几点吧,
a) 降低代码的耦合性 维护的时候想切换依赖只要改改配置就好了
b) 测试的时候很方便吧,直接接口Mock就好了,不用依赖具体的类。
三:IOC由哪些模块组成?
四:学习Spring Resource和ResourceLoader以及资源加载模式ant匹配
五:学习BeanFactory和ApplicationContext以及BeanFactory和ApplicationContext的Bean生命周期
我的理解BeanFactory和ApplicationContext的区别大致有两个:
1. BeanFactory 初始化的时候不加载单例对象,第一次调用的时候才加载。
ApplicationContext启动的时候就加载所有的单例Bean。
2. ApplicationContext启动的时候会自动识别配置中的Processor并将它注册在上下文中而BeanFactory则需要手动添加才能在Bean的生命周期中起作用。
七:Spring Bean的作用域,先抛出几个问题
1. 默认的作用域是什么?
2. DAO 默认是singleton,如何保证线程安全?
- 大小: 20.1 KB
- 大小: 24.3 KB
分享到:
相关推荐
**Spring Ioc 实现原理详解** Spring Ioc(Inversion of Control,控制反转)是Spring框架的核心特性之一,它改变了传统应用程序中对象的创建和管理方式。在传统的软件设计中,对象的创建和依赖关系的维护通常由...
spring Ioc容器配置 IOC容器数据源配置 <!-- 配置数据源 --> destroy-method="close"> <value>org.gjt.mm.mysql.Driver <value>jdbc:mysql://localhost:3306/demo <value>root ...
Spring 框架是Java开发中的核心框架,它主要由两个关键部分组成:IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。这两个概念是Spring框架的核心特性,极大地简化了企业...
SpringIOC是Spring Framework中的核心组件之一,负责管理应用程序中的对象、依赖关系和生命周期。 在 Spring IOC 中,对象的创建和管理是通过 BeanFactory 或 ApplicationContext 实现的。BeanFactory 是 Spring ...
标题 "Spring IOC" 描述了我们讨论的核心主题——Spring 框架中的依赖注入(Inversion of Control,简称 IOC)机制。Spring 是一个广泛应用的 Java 应用开发框架,其核心特性之一就是IOC,它极大地简化了软件组件...
Spring IoC 加载流程讲解 在本节中,我们将对 Spring IoC 加载流程进行详细的讲解,并探讨 IoC 思想和依赖倒置原则的应用。 IoC 控制反转 IoC(Inversion of Control)是指在软件设计中,将对象实例的控制权从...
Spring IOC,全称Inversion of Control,即“控制反转”,是Spring框架的核心特性之一。在传统的Java应用程序中,对象的创建和管理通常由开发者自己控制。而在Spring IOC中,这种控制权被反转,对象的创建、初始化、...
Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性之一,它允许开发者将对象的创建和管理交给Spring容器来处理,从而使代码更加松耦合,更易于测试和维护。下面将详细介绍Spring IOC的基本概念、...
Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它极大地简化了Java应用的开发,通过将对象的创建和管理交由Spring容器来处理,开发者可以更专注于业务逻辑。下面,我们将深入探讨Spring IOC...
Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它将对象的创建和管理权交由Spring容器来负责,从而实现了依赖倒置,增强了代码的可测试性和可维护性。DI(Dependency Injection,依赖注入)...
Spring IoC,全称为Inversion of Control,即控制反转,是Spring框架的核心特性之一。它是一种设计模式,改变了传统程序中的对象创建和管理的方式,将对象的生命周期管理交由Spring容器来负责,使得代码更加解耦,...
Spring IOC,即Spring控制反转,是Spring框架的核心特性之一。控制反转(Inversion of Control,简称IoC)是一种设计原则,用于减少代码间的耦合,提高系统模块化和代码的重用性。在Spring框架中,IOC具体体现在对...
标题《Spring IoC源码深度剖析开源架构源码2021.pdf》和描述《Spring IoC源码深度剖析开源架构源码2021.pdf》表明该文档主要面向于分析Spring框架中控制反转(IoC)容器的核心源码,解析和理解其内部的工作机制及...
Java反射和Spring IOC是Java开发中的两个重要概念,它们在构建灵活、可扩展的应用程序时起着关键作用。本文将深入探讨这两个主题,并提供相关的学习资源。 首先,让我们了解一下Java反射。Java反射机制是Java语言的...
### Spring IoC与注解依赖注入详解 #### 一、Spring框架简介 Spring框架是由Rod Johnson创建的一个开源项目,最初是为了解决企业级应用开发中的复杂性问题而诞生的。Spring框架的核心特性包括IoC(Inversion of ...
在本资源"手写spring ioc(三) 资源org.zip"中,我们主要关注的是如何实现一个简易版的Spring IOC(Inversion of Control)容器,它涵盖了ioc的基本功能,包括解决循环依赖、使用构造器注入以及自动注入等核心特性。...
在Spring框架中,IOC(Inversion of Control,控制反转)是一种设计原则,它将对象的创建和管理职责从应用代码中分离出来,交由框架来处理。这样,开发者可以更专注于业务逻辑,而不是对象的生命周期。AOP(Aspect ...
springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC...
spring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demo...
**Spring 的 IoC 容器** IoC(Inversion of Control)即控制反转,是 Spring 的核心特性之一。在传统的编程模式中,对象之间存在依赖关系,程序员需要手动创建和管理这些对象。而在 Spring 中,IoC 容器负责管理和...