很早就在学习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容器配置 IOC容器数据源配置 <!-- 配置数据源 --> destroy-method="close"> <value>org.gjt.mm.mysql.Driver <value>jdbc:mysql://localhost:3306/demo <value>root ...
spring ioc容器初始化流程图 spring ioc容器依赖注入流程图 spring aop实现原理流程图
spring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring容器统一进行管理,从而实现松耦合
SpringIoc示例代码,SpringIoc示例代码,SpringIoc示例代码,SpringIoc示例代码
以注解方式模拟Spring IoC AOP,了解Spring是如何实现的.
spring ioc思维导图,让自己快速、详尽地了解spring ioc知识。
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...
详细讲解了springioc的各种注入方式以及对应的java方式。讲解了springioc和DI的区别,以及注入特殊复杂的属性
Spring IoC加载流程讲解以及IoC思想和依赖倒置原则
SpringIOC经典Demo,绝对的经典.
Spring Ioc 注解 依赖注入
这是个模拟spring ioc的学习例子,是个java工程。有助于对aop和ioc的理解
Spring IOC基础jar包
spring ioc开发最小依赖包4个,还包含两个辅助包commons-logging.jar和log4j.jar
springioc加载流程图.pdf
spring的ioc容器详细讲解,理解springioc容器
SpringIOC和AOP实现机制模拟,来自与网络。
第一个spring IOC例子(非maven) 方法步骤: 1、下载spring包,提取core,bean,context,expression 四大基础jar http://repo.spring.io/release/org/springframework/spring/ 2、下载common-logging jar ...
Spring IoC源码深度剖析开源架构源码2021.pdf