当前位置: 首页 > article >正文

每日十题八股-2024年12月18日

1.spring框架中都用到了哪些设计模式?
2.spring 常用注解有什么?
3.Spring的事务什么情况下会失效?
4.Spring的事务,使用this调用是否生效?
5.Bean的生命周期说一下?
6.Bean是否单例?
7.Bean的单例和非单例,生命周期是否一样?
8.Spring bean的作用域有哪些?
9.Spring容器里存的是什么?
10.在Spring中,在bean加载/销毁前后,如果想实现某些逻辑,可以怎么做

1.spring框架中都用到了哪些设计模式?

工厂模式(BeanFactory),代理模式(AOP),单例模式(Bean),模版模式(rediaTemplate,提供一些方法),包装器模式(Integer,Character包装类),观察者模式(Spring事件驱动模型),适配器模式(Java 中的 JDBC 通过适配器模式与不同类型的数据库进行交互。)。

2.spring 常用注解有什么?

@Autowired 注解 (用到类内修饰字段)主要用于自动装配bean。
@Component 修饰类 自动装配bean。
@Configuration 注解用于标记一个类作为Spring的配置类。
@Bean 没有主动用过的。
在这里插入图片描述@Service
@Repository 注解用于标记一个类作为数据访问层的组件。
@Controller 注解用于标记一个类作为控制层的组件。

3.Spring的事务什么情况下会失效?

Spring Boot通过Spring框架的事务管理模块来支持事务操作。事务管理在Spring Boot中通常是通过 @Transactional 注解来实现的。主要还是不符合AOP的动态代理条件的话就会出问题。

在这里插入图片描述
把异常给捕获了,但没有抛出来,所以事务不会回滚,只有捕捉到异常事务才会生效。
因为 Spring 默认回滚的是 RuntimeException 异常,和程序抛出的 Exception 异常不匹配,所以事务也是不生效的。如果要触发默认 RuntimeException之外异常的回滚,则需要在 @Transactiona事务注解上指定异常类。

4.Spring的事务,使用this调用是否生效?

不能生效。因为Spring事务是通过代理对象来控制的,只有通过代理对象的方法调用才会应用事务管理的相关规则。当使用this直接调用时,是绕过了Spring的代理机制,因此不会应用事务设置。
底层原因就是导致代理无法实现。
在这里插入图片描述
在这里插入图片描述

5.Bean的生命周期说一下?

Bean 在 Spring(IoC)中从创建到销毁的整个过程。

  1. 实例化:为 Bean 分配内存空间;
  2. 设置属性:将当前类依赖的 Bean 属性,进行注入和装配;
  3. 初始化:
    • 执行各种通知;
    • 执行初始化的前置方法;
    • 执行初始化方法;
    • 执行初始化的后置方法。
  4. 使用 Bean:在程序中使用 Bean 对象;
  5. 销毁 Bean:将 Bean 对象进行销毁操作。

6.Bean是否单例?

默认是单例的。可以指定:但是,Spring也支持将Bean设置为多例模式,即每次请求都会创建一个新的Bean实例。可以在Bean定义中通过设置scope属性为"prototype"来实现。

7.Bean的单例和非单例,生命周期是否一样?

不一样的,Spring Bean 的生命周期完全由 IoC 容器控制。Spring 只帮我们管理单例模式 Bean 的完整生命周期,对于 prototype 的 Bean,Spring 在创建好交给使用者之后,则不会再管理后续的生命周期。

8.Spring bean的作用域有哪些?

在 Spring 中,Bean 的常见作用域有以下 5 种:
singleton:单例作用域。
prototype:原型作用域(多例作用域)。
request:请求作用域。
session:会话作用域。
application:全局作用域。
注意:后 3 种作用域,只适用于 Spring MVC 框架。

9.Spring容器里存的是什么?

在Spring容器中,存储的主要是Bean对象。
Bean是Spring框架中的基本组件,用于表示应用程序中的各种对象。当应用程序启动时,Spring容器会根据配置文件或注解的方式创建和管理这些Bean对象。Spring容器会负责创建、初始化、注入依赖以及销毁Bean对象。

10.在Spring中,在bean加载/销毁前后,如果想实现某些逻辑,可以怎么做?

Spring提供了接口和注解允许自定义在Bean生命周期的关键点执行的代码。

  1. xml方法实现bean的创建:使用init-method和destroy-method
  2. 直接bean实现InitializingBean和DisposableBean接口
  3. 使用@PostConstruct和@PreDestroy注解
  4. 使用@Bean注解的initMethod和destroyMethod属性

http://www.kler.cn/a/445116.html

相关文章:

  • 介绍 Html 和 Html 5 的关系与区别
  • Mybatis加密解密查询操作(sql前),where要传入加密后的字段时遇到的问题
  • WPF ControlTemplate 控件模板
  • vscode+msys2+clang+xmake c++开发环境搭建
  • 通过基于几何的网格自适应增强 CFD 网格划分
  • 事务-介绍与操作四大特性
  • 亚马逊云科技 re:Invent 2024重磅发布!Amazon Bedrock Data Automation 预览版震撼登场
  • 深度学习0-前置知识
  • 道路运输企业安全生产管理人员安全考核试题
  • 【网络安全设备系列】7、流量监控设备
  • 华为云联合中国信通院发布首个云计算智能化可观测性能力成熟度模型标准
  • Group FLUX - Beta Sprint Summary Essay
  • Vue中Axios二次封装
  • 主曲率为常数时曲面分类
  • uniApp使用腾讯地图提示未添加maps模块
  • 设计模式--单例模式【创建型模式】
  • uniapp图片数据流���� JFIF ��C 转化base64
  • Ubuntu将深度学习环境配置移植到新电脑
  • 分布式锁介绍
  • Spark 运行时对哪些数据会做缓存?
  • 怎样衡量电阻负载的好坏
  • (六)Spring Cloud Alibaba 2023.x:Sentinel 流量控制与熔断限流实现
  • 2024年12月16日Github流行趋势
  • mfc140.dll文件缺失的修复方法分享,全面分析mfc140.dll的几种解决方法
  • 如何使用git新建本地仓库并关联远程仓库的步骤(详细易懂)
  • LoadBalancer负载均衡和Nginx负载均衡区别理解