Spring相关知识集锦----1
一、Spring两大核心是什么?
Spring两大核心:IOC(控制反转)、AOP(面向切面编程)
IOC:控制反转,指创建对象控制权的转移;以前创建对象的主动权和时机是由自己把握;现在这种权力转移到Spring容器中,并由容器根据配置文件去创建实例和管理各个实例之间的依赖关系,对象与对象之间松散耦合,也利于功能的复用。
AOP:面向切面编程,作为面向对象的一种补充;用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用模块。
二、Sring生命周期
1.实例化:实例化一个Bean
2.按照Spring上下文对实例化的Bean进行配置,也就是IOC注入
3.如果这个Bean实现了BeanNameAware接口,会调用它实现的setBeanName方法,此处传递的是Spring配置文件中Bean的ID
4.如果这个Bean实现了BeanFactoryAware接口,会调用它实现的setBeanFactory方法,此处传递的是Spring工厂本身
5.如果这个Bean实现了ApplicationContextAware接口,会调用setApplicationContext方法,传入Spring的上下文
6.如果这个Bean关联了BeanPostProcessor接口,会调用postBeforeInitialization方法
7.如果这个Bean在Spring配置文件中配置了init-method属性会自动调用其配置的初始化方法
8.如果Bean关联了BeanPostProcessor接口,将会调用postAfterInitialization方法
9.当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean接口,会调用其实现的destroy方法
10.最后,如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用其配置的销毁方法
三、Spring支持Bean的作用域
1)singleton:默认作用域,单例Bean,每个容器中只有一个bean实例
2)prototype:为每一个bean请求创建一个实例
3)request:为每一个request请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收器回收
4)session:与request范围类似,同一个session会话共享一个实例,不同会话使用不同实例
5)global-session:全局作用域,所有会话共享一个实例。
四、Spring框架中用到的设计模式
1.工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象实例
2.单例模式:Bean默认为单例模式
3.代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术
4.模板方法:用来解决代码重复的问题
5.观察者模式:定义对象间一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象得到通知被动更新
五、SpringBoot产生背景
过去,基于spring构建一个应用,往往都需要开发人员定义样板化的配置,例如:springmvc的配置、mybatis配置等,但这些配置往往与业务逻辑无关,且具有一定通用性。SpringBoot是一个用于构建基于spring框架的独立应用程序的框架,它采用了自动配置原则,以减少开发人员在搭建应用架构方面的时间和精力,同时提升了系统的可维护性和扩展性。
六、Spring如何解决循环依赖问题
spring的循环依赖的理论依据其实是基于java的引用传递,当我们获取到对象的引用时,对象的field或属性是可以延后设置的。spring是靠三级缓存来解决循环依赖问题的。
七、Spring简化配置是如何简化的
springboot通过自动配置,让开发者无需手动配置大量繁琐的配置项。它基于项目的依赖关系,自动配置合适的bean和参数,从而极大简化了spring应用的初始化过程。