Spring面试题

Spring 的常用注解(必会)

  1. @Component(任何层) @Controller @Service @Repository(dao): 用于 实例化对象

  2. @Scope : 设置 Spring 对象的作用域

  3. @PostConstruct @PreDestroy : 用于设置 Spring 创建对象在对象创建之后和销 毁之前要执行的方法

  4. @Value: 简单属性的依赖注入

  5. @Autowired: 对象属性的依赖注入

  6. @Qualifier: 要和@Autowired 联合使用,代表在按照类型匹配的基础上,再按照 名称匹配。

  7. @Resource 按照属性名称依赖注入

  8. @ComponentScan: 组件扫描

  9. @Bean: 表在方法上,用于将方法的返回值对象放入容器

  10. @PropertySource: 用于引入其它的 properties 配置文件

  11. @Import: 在一个配置类中导入其它配置类的内容

  12. @Configuration: 被此注解标注的类,会被 Spring 认为是配置类。Spring 在启动 的时候会自动扫描并加载所有配置类,然后将配置 类中 bean 放入容器

  13. @Transactional 此注解可以标在类上,也可以表在方法上,表示当前类中的方法 具有事务管理功能。

Spring 的事务传播行为(高薪常问)

spring 事务的传播行为说的是,当多个事务同时存在的时候,spring 如何处理这些事 务的行为。 备注(方便记忆): propagation 传播 require 必须的/suppor 支持/mandatory 强制托管/requires-new 需要新建/ not -supported 不支持/never 从不/nested 嵌套的

① PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前 存在事务,就加入该事务,该设置是最常用的设置。

② PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务, 如果当前不存在事务,就以非事务执行。

③ PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,就加入该事 务,如果当前不存在事务,就抛出异常。

④ PROPAGATION_REQUIRES_NEW:创建新事务,无论当前存不存在事务,都创建 新事务。51

⑤ PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务, 就把当前事务挂起。

⑥ PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

⑦ PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前 没有事务,则按 REQUIRED 属性执行

Spring 事务的实现方式和实现原理(必会)

Spring 事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring 是 无法提供事务功能的。真正的数据库层的事务提交和回滚是通过 binlog 或者 redo log 实 现的。 spring 事务实现主要有两种方法

1、编程式,beginTransaction()、commit()、rollback()等事务管理相关的方法

2、声明式,利用注解 Transactional 或者 aop 配置

相关推荐
万粉变现经纪人2 分钟前
如何解决 pip install pyodbc 报错 缺少 ‘cl.exe’ 或 ‘sql.h’(ODBC 头文件)问题
数据库·python·sql·网络协议·bug·ssl·pip
资生算法程序员_畅想家_剑魔7 分钟前
Java常见技术分享-设计模式的六大原则
java·开发语言·设计模式
Howrun77718 分钟前
C++ 智能指针_详细解释
开发语言
wangqiaowq18 分钟前
SQL Server 支持多种网络协议用于客户端与数据库引擎之间的通信
数据库
Cherry的跨界思维19 分钟前
【AI测试全栈:质量】40、数据平权之路:Python+Java+Vue全栈实战偏见检测与公平性测试
java·人工智能·python·机器学习·ai测试·ai全栈·ai测试全栈
刀法如飞20 分钟前
从零手搓一个类Spring框架,彻底搞懂Spring核心原理
java·设计模式·架构设计
编程大师哥24 分钟前
JavaScript DOM
开发语言·javascript·ecmascript
dazzle24 分钟前
Python数据结构(四):栈详解
开发语言·数据结构·python
毕设源码-邱学长28 分钟前
【开题答辩全过程】以 基于java的办公自动化系统设计为例,包含答辩的问题和答案
java·开发语言
weixin1997010801629 分钟前
马可波罗 item_get - 获取商品详情接口对接全攻略:从入门到精通
java·大数据·人工智能