Spring框架知识点
Spring框架中的单例Bean是线程安全的吗?
答:Spring框架中有一个@Scope注解,默认值是singleton,单例的,当bean中定义了可变参数,就不是线程安全的。我们建议不要注入有状态的变量,如果必须使用,建议使用ThreadLocal进行变量副本保存,保证线程安全。
什么是AOP?项目中有没有使用到AOP?
答:AOP是面向切面编程,是指哪些与业务实现无关,但又对多个对象产生影响的公共行为和逻辑,将他们横向抽取并封装为一个可重用的模块,这个模块就叫“切面”。作用就是降低代码耦合度,提高了系统的可维护性
常见的AOP使用场景:
- 日志
- Spring中内部的事务处理
- 异常处理
Spring中的事务是如何实现的?
Spring中事务失效的场景有哪些?
情况一:异常捕获处理
情况二:抛出非运行时(检查)异常
情况三:非public方法导致的事务失效
Spring的bean的生命周期?
首先了解BeanDefinition
BeanDefinition定义了Bean的基本信息,构造函数进行创建,依赖注入,Aware接口,初始化方法之前的后置处理器,初始化方法,初始化方法包括InitialzingBean和自定义init方法,初始化后的后置处理器,AOP就是在这里进行的:
其中,BeanDefinition -> 构造函数 属于是Bean的创建
下面都属于初始化赋值