java 复习

本文介绍了Spring中的事务管理,包括ACID原则、事务类型和如何通过注解开启事务。此外,还讲解了Spring的自动装配机制,以及在实际应用中如何使用。涉及内容涵盖事务的重要性和使用场景,以及SpringBoot的优点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.怎么用spring开启事务

事务是什么:事务仅与数据库相关,如果对数据库进行多次操作,每一次的执行或步骤都是一个事务。事务必须服从ISO/IEC所制定的ACID原则。
ACID原则备注
原子性指整个事务是不可以分割的工作单元。表示事务执行过程中的任何失败都将导致事务所做的任何修改失效
一致性指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。
隔离性指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。
持久性指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。表示已提交的数据在事务执行失败时,数据的状态都应该正确。
为什么要使用事务:事务是为了解决数据安全操作提出的,事务控制实际上就是控制数据的安全访问。

比如:
银行的转账业务,账户A要将自己账户上的666转到账户B下面,A账户余额首先需要减去666元,然后B账户要增加666元,假如中间网络出现了问题,A账户减去666元已经结束,B因为网络中断而操作失败,那么整个业务失败,必须要做出控制保证业务的正确性,这个时候就需要事务,要么全部执行成功,要么操作全部撤销,这样就保证了数据的安全性。

java 事务类型
名称描述
JDBC事务
JTA(java Transaction API)事务
容器事务主要指的是J2EE应用服务器提供的事务管理,局限于EJB应用使用。
spring开启事务
  1. 在启动主类添加注解:@EnableTransactionManagement 来启用注解式事务管理,相当于之前在xml中配置的<tx:annotation-driven />注解驱动。
  2. 在需要事务的类或者方法上面添加@Transactional(rollbackFor = Exception.class)注解,里面可以配置需要的粒度
  3. 在逻辑上如果需要手动回滚则加入下代码
    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

2.spring自动装配

什么是自动装配:自动配装是指在使用SpringBoot的时候,会自动将Bean装配到IoC容器中。例如我们在使用Redis数据库的时候,会引入依赖spring-boot-starter-data-redis。在引入这个依赖后,服务初始化的时候,会将操作Redis需要的组件注入到IoC容器中进行后续使用
过程:1.获取到组件(例如spring-boot-starter-data-redis)META-INF文件夹下的spring.factories文件
2.spring.factories文件中列出需要注入IoC容器的类
4.将实体类注入到IoC容器中进行使用

3.springMVC的工作流程

4.spring cloud的组件有哪些?作用是什么?

5.spring,spring boot,spring cloud 的区别

6.spring boot 的有哪些优点?

7.arrayList 和 LinkedList 有什么区别

8.StringBuilder和StringBuffer的区别

9.Synchrogazer和lock的区别

10.tcp的三次握手过程

11.io阻塞模式

12.springmvc的工作原理,底层实现

13.spring 的 bean有几种生命周期

14.mybatis中#和$的区别

15.mysql什么情况下索引失效

16.如何避免回表查询

17.mysql事务隔离级别,当前读是什么

18.快排和冒泡排序

19.nginx 的使用

20.hashMap的底层实现原理

21.hashMap链表生成原理

22.https的工作原理

21.使用mybatis时如何分页

23.mybatis延迟加载问题

24.怎么进行数据格式转换

25.项目中哪里用到了redis

26.redis分布式锁

27.项目中的分布式

28.gc回收器

29.什么是新生代什么是老生代

30.出现oom该怎么办

31.bean的生命周期

32.svn和volitail的区别

33.几种索引,索引优缺点,联表查询(a,b,c)走索引的情4

34.#和$的区别

35.线程池的创建方式

36.maven的结构目录,导过哪些关于maven的依赖

37.mysql的特点

38.sql 引擎优化做过吗?

39.sql 优化?

40.rabbitmq的作用,几种模式

41.缓存雪崩,缓存击穿,缓存穿透了解过吗?

42.消息队列的使用,消息队列如何做消息转发?

43.多线程

44.如何实现秒杀

45.jvm内存模型

46.新生代为什么要复制算法

47.如何排查oom异常,什么情况下会出现,怎么解决

48.操作系统的虚拟页表怎么存储

49.java的泛型是怎么实现的

50.项目中做过的优化,项目中的亮点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值