课程介绍:
Spring-单例bean是线程安全的吗?
bean不是线程安全的。
面试题:
Spring框架中的单例bean是线程安全的吗?
不是线程安全的
Spring框架中有一个@Scope注解,默认的值就是singleton,单列的。
因为一般在spring的bean的中都是注入无状态的对象,没有线程安全问题,如果在bean中定义了可修改的成员变量,是要考虑线程安全问题的,可以使用多例或者加锁来解决。
什么是AOP?
spring中事物的底层逻辑是AOP,AOP的底层逻辑是动态代理。
AOP称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为逻辑,抽取并封装为一个可重用的模块,这个模块被命名为‘切面’(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。
常见的AOP使用场景:
记录操作日志
缓存处理
Spring中内置的事务处理
记录操作日志思路:
Spring中的事务是怎么实现的?
Spring支持编程式事务管理和生命式事务管理两种方式。
编程式事务控制:需使用Transaction Template来进行实现,对业务代码有侵入性,项目中很少使用。
声明式事务管理: 声明式事务管理是建立在AOP之上的。其本质是通过AOP功能,对方法前后进行拦截,将事务处理的功能编织到拦截的方法中,也就是在目标方法开始之前加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。
面试题:
事务失效的场景:
异常捕获处理:
抛出检查异常:
非public方法:
面试题:
Bean的生命周期:
面试题:
Spring中的循环引用:
什么是Spring中的循环依赖:
三级缓存解决循环依赖:
可以解决平常实例化对象:
对象被增强不行:
构造方法出现了循环依赖怎么解决?
注解:延迟加载,什么时候需要B对象再进行实例化B
面试题:
Spring MVC执行流程:
面试题:
Springboot自动配置原理:
面试题:
Spring中常见注解:
SpringMVC常见注解: