08:Spring底层相关篇(7)

本文详细探讨了Spring框架的基础概念,包括IOC(反转控制)和AOP(面向切面编程)的理解。接着,介绍了Spring容器的启动流程、Bean的创建过程以及线程安全性问题。同时,文章还阐述了Spring如何解决循环依赖,并讲解了事务管理的实现。最后,讨论了SpringMVC中控制器的单例模式及其线程安全策略。
摘要由CSDN通过智能技术生成

目录

一、什么是Spring?谈谈你对IOC和AOP的理解?

二、Spring容器的启动流程是怎么样的?

三、Spring框架中Bean的创建过程是怎样?

四、Spring框架中的Bean是线程安全的吗? 如果线程不安全,要如何处理?

五、Spring如何处理循环依赖问题?

六、Spring如何处理事务?

七、SpringMVC中的控制器是不是单例模式?如果是,如何保证线程安全?


一、什么是Spring?谈谈你对IOC和AOP的理解?

Spring: 是一个企业级java应用框架,他的作用主要是简化软件的开发以及配置过程,简化项目部署环境。
Spring的点有:
1、Spring低侵入设计,对业务代码的污染非常低。
2、Spring的DI机制将对象之间的关系交由框架处理,减少组件的耦合。
3、Spring提供了AOP技术,支持将一些通用的功能进行集中式管理,从而提供更好的复用。
4、Spring对于主流框架提供了非常好的支持。
IOC就是控制反转,指创建对象的控制权转移给Spring来进行管理。简单来说,就是应用不用去new对象了,而全部交由Spring自动生产。
IOC有三种注入方式:1、 构造器注入 2、setter方法注入 3、注解注入。
AOP 面向切面:
用于将那些与业务无关,但却对多个对象产生影响的公共行为。抽取并封装成一个可重用的模块。AOP的核心就是动态代理。JDK的动态代理和CGLIB动态代理。

二、Spring容器的启动流程是怎么样的?

使用AnnotationConfigApplicationContext 来跟踪一下启动流程:
(1)this():初始化reader和scanner
(2)scan(basePackages):使用scanner组件扫描basePackage下的所有对象,将配置类的BeanDefinition注册到容器中。
(3)refresh():刷新容器。
(4)prepareRefresh:刷新前的预处理
(5)obtainFreshBeanFactory: 获取在容器初始化时创建的BeanFactory
(6)prepareBeanFactory: BeanFactory的预处理工作,会向容器中添加一些组件。
(7)postProcessBeanFactory: 子类重写该方法,可以实现在BeanFactory创建并预处理完成后做进一步的设置。
(8)invokeBeanFactoryPostProcessors: 在BeanFactory初始化之后执行BeanFactory的后处理器。
(9)registerBeanPostProcessors: 向容器中注册Bean的后处理器,他的主要作用就是干预Spring初始化Bean的流程,完成代理、自动注入、循环依赖等这些功能。
(10)initMessageSource: 初始化messagesource组件,主要用于国际化。
(11)initApplicationEventMulticaster: 初始化事件分发器
(12)onRefresh: 留给子容器,子类重写的方法,在容器刷新的时候可以自定义一些逻辑。
(13)registerListene
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thomas.Sir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值