Spring概述总结

1、Spring是什么?
以POJO为基础,利用控制反转,依赖注入,切片等技术,为实现简化企业级应用开发,实现的轻量级框架。Spring家族很庞大,现在流行的有SpringMVC, Springboot,SpringCloud,Springflow等。

2、spring优点
轻量级
利用了控制反转,最大程度的降低了代码之间的耦合度
利用了面向切片编程,把业务逻辑和系统服务分开来
利用了容器技术,包含和管理应用中bean的生命周期
事务管理也很优秀,提供可扩展的事务管理接口

3、Spring的主要组成模块
core 模块: beanfactory,常用的有xmlbeanfactory,注解类型bean工厂
aop 模块:提供面向切片编程
JDBC和DAO模块:提供数据库访问接口,有效管理数据库资源,还利用aop实现事务管理
WEB模块:支持包括web的任务

4、解释一下IOC
控制反转技术,将bean通过控制反转交由spring容器来管理,实现bean的创建、装配、配置、注入并管理bean的生命周期。

5、ApplicationContext
AnnotationConfigApplicationContext
FileSystemApplicationContext
ClassPathXmlApplicationContext
XmlWebApplicationContext

6、beanfactory和ApplicationContext区别
beanfactory是Spring框架最核心的接口,应用上下文是基于beanfactory的。
beanfactory提供主要方法就是getBean(String beanName),beanfactory的功能通过其他接口扩展。
ApplicationContext是beanfactory派生出来的,提供了更多面向对象的实际功能。比如MessageSource:为应用提供i18n国际化访问
参考:https://blog.csdn.net/heqingsong1/article/details/8540558

7、依赖注入有几种方式
构造方法:constructor-arg,强依赖
setter方法:property

8、什么是SpringBeans
组成spring组件的主干java对象,由IOC容器进行管理,配置,装配。可以通过spring配置的元数据创建,创建时候可以通过scope属性来定义其是否为“singloton”、“prototype”、“request”、“session”、“globalSession”

9、单例的springbean是否是线程安全的?
不是,Spring框架对单例的bean没有进行多线程的封装,在大多数情况下,Spring bean没有可变状态,所以某种程度来说,单例bean是线程安全的。但是也有多种状态的bean,比如View Model对象,此时需要自行保证线程安全。

10、Spring框架中bean的生命周期

1)、Spring容器从xml文件中读取bean定义,并实例化bean。
2)、Spring根据bean定义,填充属性
3)、若实现beanNameAware接口,Spring传递bean的ID到setBeanName()
4)、若实现beanFactoryAware,Spring传递factory到setBeanFactory()
5)、若有任何与bean关联的beanPostProcessors,Spring会在postProcesserBeforeInitialization()方法内调用
6)、若实现了InitializingBean,则调用afterPropertiesSet()方法
7)、init-method
8)、若有任何与bean关联的beanPostProcessors,Spring会在postProcesserAfterInitialization()方法内调用
---可使用阶段 ---
9)、若实现了DisposableBean接口,调用destory()方法
10)、destory-method

11、bean的重要生命周期方法
setup() 加载bean的时候。 对应init-method
teardown() 卸载bean的时候。 对应destroy-method

12、自动装配
1)、无自动装配
2)、byType,典型的有@Autowired注解
3)、byName,典型的有@Resource
4)、constructor,类似byType,但是要提供构造器参数
5)、autodetect,首先尝试用constructor,再用byType

13、什么是循环依赖,怎么解决循环依赖
循环依赖就是循环引用,在两个或两个以上的bean互相持有对方,最终形成闭环,比如:A依赖B,B依赖C,C依赖A。

结论:不能解决构造器循环依赖,可以解决setter方法和field循环依赖
原因:
首先,springbean对象初始化大致分为三步,第一步,实例化bean;第二步,执行populateBean()设置参数;第三步:执行initialize()方法初始化。
其次,我们看一下Spring怎么解决setter和field循环依赖,Spring有三级缓存;
在拿到bean的时候,我们先从SingletonObjects缓存中getBean,若没有bean,就到earlySingletonObjects中获取,若还没有bean,就到singletonFactory中获取。这里有个earlySingletonObjects,这里面的bean存放的是只实例化的bean,也就是说此时的这个bean创建出来了(用构造方法),虽然还没有进行第二步第三步,其他的bean可以在earlySingletonObjects中获得这个bean,使其自身可以完成创建。
最后,为何不能解决构造器循环依赖,因为earlySingletonObjects中的对象,也是由构造方法实例化出来的,加入singletonFactories三级缓存的前提是执行了构造器。

13、开启注解
<context:annotation-config/>

14、@Autowired和@Resource注解区别
相同:都可以用于装配和注入bean
不同:
1)、@Autowired默认通过类型来找到相应的bean进行装配,允许bean为null,可以指定required=false,可以和@ Qualifier注解一起使用,指定特定name的bean
2)、@Resource默认通过name来找到对应的bean,找不到再以类型查找,再找不到报空指针异常。但是name属性指定之后必须以name来查找bean

15、spring的事务隔离级别
read_uncommitted
read_committed
repeatable_read
serizerable
16、spring的事务传播机制
require
not_support
mandatory
require_new
never

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353