【框架】单例bean是线程安全吗、AOP相关面试、事务失效场景

提问:spring框架中的单例bean是线程安全吗?

回答:不是线程安全的。
spring框架中有一个@Scope注解,默认值是singleton,单例的。
因为一般在spring的bean中都是注入无状态的对象,没有线程安全的问题,如果在bean中定义可修改的成员变量,是要考虑线程安全的,可以使用多例或者加锁来解决。

提问:什么是AOP,你们项目有没有用到AOP?

回答:AOP称为面向切面编程,用于将那些于业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装一个可重用的模块,这个模块被命名为“切面”(Aspect)减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。
常见的AOP使用场景:
·记录操作日志
·缓存处理
·spring中内置的事务处理
核心是:使用AOP中的环绕通知+切点表达(找到记录日志的方法),通过环绕统治的参数获取请求方法的参数(类,方法,注解,请求方式),获取到这些参数以后,保存到数据库

提问:spring中的事务是如何实现的?

回答:其本质是通过AOP功能,对方法前后进行拦截,在执行方法之前开启事务,在执行完目标方法之后根据执行情况提交或者回滚事务。

提问:spring中事务失效的场景有哪些?

回答:
·异常捕获处理
·抛出检查异常
·非public方法

1.异常捕获处理,自己处理了异常,没有抛出,解决方法:手动抛出
2.抛出异常检查,配置rollbackFor属性为Exception
3.非public方法导致事务失效,改为public

posted @ 2026-04-23 16:27  神净讨魔765  阅读(8)  评论(0)    收藏  举报