1、consul的可靠性
2、spring的原理,AOP/IOC原理,使用场景
3、spring bean生命周期
- 实例化一个Bean,也就是我们常说的new
- 按照Spring上下文对实例化的Bean进行配置,即 IOC 注入
- 如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(String)方法,此处传递的就是spring配置文件中Bean的ID值
- 如果这个Bena已经实现了BeanFactoryAware接口,会调用它实现的setBeanFactory(BeanFactory)传递Spring工厂自身
- 如果这个Bean已经实现了ApplicationContextAware接口,会调用setApplicationContext(ApplicationContext)方法,传入Spring上下文
- 如果这个Bean关联了BenaPostProcessor接口,将会调用postProcessBeforeInitialization(Object obj, String s)方法,BeanPostPorcessor经常被用作Bean内容的更改,并且由于这个是在Bena初始化结束时调用哪个的方法,也可以被应用于内存或缓存技术。
- 如果Bena在Spring配置文件中配置了init-method属性会自动调用其配置的初始化方法。
- 如果这个Bean关联了BeanPostProcessor接口,将会调用postPorcessAfterInitialization(Object obj, String s)方法
- 以上工作完成之后就可以应用这个Bean了,那这个Bean是一个Singleton的,所以一般情况下我们调用同一个ID的Bean会是在内容地址相同的实例,当然在Spring配置文件中也可以配置非Singleton
- 当Bena不再需要时,会经过清理阶段,如果Bean实现了DisposableBena接口,会调用其实现的destroy()方法
- 最后,如果这个Bean在Spring中配置了destroy-method属性,会自动调用其配置的销毁方法。
4、什么是依赖注入
DI、IOC是同一个概念。依赖注入是当一个对象需要依赖另一个对象的协助时,创建、管理被依赖对象的工作由Spring来完成,而不是由调用者完成,因此称为控制反转,创建被依赖对象的实例也是由spirng容器来创建,并注入给调用者,因此称为依赖注入。
5、Spring在SSM中起什么作用
- spring: 是一个轻量级框架
- 作用: Bean工厂,用来管理Bean的声明周期和框架集成
- 两大核心:
- IOC/DI(控制反转/依赖注入),由spring控制将所需的对象注入到相应的类中,spring顶层容器为BeanFactory
- AOP:面向切面编程
6、Spring的事务
- 编程式事务: 编程方式管理事务,灵活,但难管理
- 声明式事务: 将业务代码和事务管理分离,用注解和xml配置来管理事务
7、IOC在项目中的作用
IOC解决了对象之间的依赖问题,把所有的Bean的依赖关系通过注解或者配置文件关联起来尽心管理,降低和耦合度。
8、Spring DI的注入方式
- 构造注入
- set注入
- 接口注入
9、IOC、AOP实现原理
- IOC:通过反射机制生成对象进行注入
- AOP:通过动态代理
10、Spring MVC的架构/工作流程图
11、spring bean的作用域
Spring中通过scope来配置Bean的作用域,scope有五个属性,用来描述不同的作用域
- singleton: 使用该属性定义Bean时,IOC容器仅创建一个Bean实例,IOC容器每次返回的是同一个Bean实例。
- prototype:使用该属性定义Bean时,IOC容器可以创建多个Bean实例,每次返回的都是一个新的实例。
- request:该属性仅对HTTP请求产生作用,使用该属性定义Bean时,每次HTTP请求都会创建一个新的Bean,适用于WebApplicationContext环境。
session: 该属性仅用于HTTP Session,同一个Session共享一个Bean实例。不同的Session使用不同的实例。
global-session: 该属性仅用于HTTP Session,同Session作用域不同的是,所有的session共享一个Bean实例。