Spring 主要有如下特点:
Spring 是一个分层架构,主要由如下 7 大模块所构成。Spring 模块位于核心容器,定义了创建、配置和管理 Bean 的方式。
Spring 通过一个配置文件来描述 Bean
之间的相互依赖关系,利用 Java 的反射功能来实例化 Bean
并建立 Bean
之间的依赖关系。Spring 的 IoC 容器在完成这些底层工作的基础上,还提供 Bean
实例缓存、生命周期管理、Bean
实例代理、事件发布、资源装载等高级服务;
总结而言:IOC 负责创建对象、管理对象(通过依赖注入)、整合对象、配置对象以及管理对象的生命周期;
Bean
配置信息,并在 Spring 容器中生成一份对应的 Bean
配置注册表;Bean
配置注册表来实例化 Bean
,并装配好 Bean
之间的依赖关系;Bean
装载到 Spring 容器中的 Bean
缓存池中,供上层的应用程序使用;Spring 中,用来组成应用程序的主体以及由 Spring IoC 容器所管理的对象叫做 Bean。简而言之,Bean 就是由 IoC 容器来进行初始化、装配和管理的对象。
Bean 的作用域主要有如下几种:
作用域为 Singleton
,该模式在多线程下不安全,表明 IoC 容器中只会存在一个共享 Bean 实例,而且所有对 Bean 的请求,主要 id
和该 Bean 定义相匹配,那么就会返回 Bean 的同一实例。Singleton
是单例模型,即在从创建容器的同时就会自动创建一个 Bean 的对象,无论是否使用,而且 每次获取到的对象都是同一对象。
作用域为 Prototype
,表明一个 Bean 定义对应多个实例,该作用域中的 Bean 会导致在 每次对该 Bean 请求时均创建一个新的 Bean 实例。Prototype
是一个原型类型,在我们创建容器时并未实例化,而是当我们获取 Bean 时才去创建一个对象,而且每次获取到的对象都不一样。
作用域为 Request
,表明在一次 HTTP
请求中,容器返回该 Bean 的同一个实例,即每个 HTTP
请求均有各自的 Bean 实例,依据某个 Bean 定义创建而成,只在基于 Web 的 Spring ApplicationContext 情形下有效。当一次 HTTP
请求处理结束时,该作用域中的 Bean 实例均被销毁。
作用域为 Session
,表明 在一个 HTTP Session
中,容器返回该 Bean 的同一个实例,对不同的 Session
请求则创建新的实例,该 Bean
实例仅在当前 Session
内有效,只在基于 Web 的 Spring ApplicationContext 情形下有效。当一个 HTTP Session
被废弃时,在该作用域内的 Bean 也将失效。
setBeanFactory()
方法,将 Bean 所在应用引用传入进来;setApplicationContext()
方法,将 Bean 所在应用的引用传入进来;post-ProcessBeforeInitalization()
方法;InitializingBean
接口,Spring 将调用他们的 after-PropertiesSet()
方法,类似地,如果 Bean 使用 init-method
声明了初始化方法,则该方法也会被调用;post-ProcessAfterInitialization()
方法;destory()
接口方法;同样,若 Bean 使用 destroy-method
声明了销毁方法,该方法也将被调用;我个人认为,如果你想靠着背面试题来获得心仪的offer,用癞蛤蟆想吃天鹅肉形容完全不过分。想必大家能感受到面试越来越难,想找到心仪的工作也是越来越难,高薪工作羡慕不来,却又对自己目前的薪资不太满意,工作几年甚至连一个应届生的薪资都比不上,终究是错付了,错付了自己没有去提升技术。
这些面试题分享给大家的目的,其实是希望大家通过大厂面试题分析自己的技术栈,给自己梳理一个更加明确的学习方向,当你准备好去面试大厂,你心里有底,大概知道面试官会问多广,多深,避免面试的时候一问三不知。
大家可以把Java基础,JVM,并发编程,MySQL,Redis,Spring,Spring cloud等等做一个知识总结以及延伸,再去进行操作,不然光记是学不会的,这里我也提供一些脑图分享给大家:
希望你看完这篇文章后,不要犹豫,抓紧学习,复习知识,准备在明年的金三银四拿到心仪的offer,加油,打工人!
[外链图片转存中…(img-OIMfkIYA-1626181094850)]
希望你看完这篇文章后,不要犹豫,抓紧学习,复习知识,准备在明年的金三银四拿到心仪的offer,加油,打工人!
领取资料只需要点击这里即可免费获取全部资料!