10.4学习

1.@Transactional

注意事项:

①事务函数中不要处理耗时任务,会导致长期占有数据库连接。

②事务函数中不要处理无关业务,防止产生异常导致事务回滚。

●事务传播属性

①REQUIRED(默认属性) 如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。

②MANDATORY 支持当前事务,如果当前没有事务,就抛出异常。

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

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

⑤REQUIRES_NEW 新建事务,如果当前存在事务,把当前事务挂起。

⑥SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行。

⑦NESTED (局部回滚) 支持当前事务,新增Savepoint点,与当前事务同步提交或回滚。 嵌套事务一个非常重要的概念就是内层事务依赖于外层事务。外层事务失败时,会回滚内层事务所做的动作。而内层事务操作失败并不会引起外层事务的回滚。

2.spring中的设计模式

●单例设计模式 : Spring 中的 Bean 默认都是单例的。

●⼯⼚设计模式 : Spring使⽤⼯⼚模式通过 BeanFactory 、 ApplicationContext 创建bean 对象。

●代理设计模式 : Spring AOP 功能的实现。

●观察者模式: Spring 事件驱动模型就是观察者模式很经典的⼀个应⽤。

●适配器模式:Spring AOP 的增强或通知(Advice)使⽤到了适配器模式、spring MVC 中也是⽤到了适配器模式适配 Controller 。

3.SpringCloud

Spring cloud 是一系列框架的有序集合。它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 spring boot 的开发风格做到一键启动和部署。

SpringBoot是Spring推出用于解决传统框架配置文件冗余,装配组件繁杂的基于Maven的解决方案,旨在快速搭建单个微服务,SpringCloud是依赖于SpringBoot的,而SpringBoot并不是依赖与SpringCloud,甚至还可以和Dubbo进行优秀的整合开发

​ MartinFlower 提出的微服务之间是通过RestFulApi进行通信,具体实现

●RestTemplate:基于HTTP协议

●Feign:封装了ribbon和Hystrix 、RestTemplate 简化了客户端开发工作量

●RPC:基于TCP协议,序列化和传输效率提升明显

●MQ:异步解耦微服务之间的调用

4.Spring Boot

●Spring Boot 通过简单的步骤就可以创建一个 Spring 应用。

●Spring Boot 为 Spring 整合第三方框架提供了开箱即用功能。

●Spring Boot 的核心思想是约定大于配置。

●Spring Boot 解决的问题

①搭建后端框架时需要手动添加 Maven 配置,涉及很多 XML 配置文件,增加了搭建难度和时间成本。

②将项目编译成 war 包,部署到 Tomcat 中,项目部署依赖 Tomcat,这样非常不方便。

③应用监控做的比较简单,通常都是通过一个没有任何逻辑的接口来判断应用的存活状态。

●Spring Boot 优点

①自动装配:Spring Boot 会根据某些规则对所有配置的 Bean 进行初始化。可以减少了很多重复性的工作。

比如使用 MongoDB 时,只需加入 MongoDB 的 Starter 包,然后配置 的连接信息,就可以直接使用 MongoTemplate 自动装配来操作数据库了。简化了 Maven Jar 包的依赖,降低了烦琐配置的出错几率。

②内嵌容器:Spring Boot 应用程序可以不用部署到外部容器中,比如 Tomcat。

应用程序可以直接通过 Maven 命令编译成可执行的 jar 包,通过 java-jar 命令启动即可,非常方便。

③应用监控:Spring Boot 中自带监控功能 Actuator,可以实现对程序内部运行情况进行监控,

比如 Bean 加载情况、环境变量、日志信息、线程信息等。当然也可以自定义跟业务相关的监控,通过Actuator 的端点信息进行暴露。

●自定义一个Starter

①创建 Starter 项目,定义 Starter 需要的配置(Properties)类,比如数据库的连接信息;

②编写自动配置类,自动配置类就是获取配置,根据配置来自动装配 Bean;

③编写 spring.factories 文件加载自动配置类,Spring 启动的时候会扫描 spring.factories 文件;

④编写配置提示文件 spring-configuration-metadata.json(不是必须的),在添加配置的时候,我们想要知道具体的配置项是什么作用,可以通过编写提示文件来提示;

⑤在项目中引入自定义 Starter 的 Maven 依赖,增加配置值后即可使用。

相关推荐
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J5 天前
从“Hello World“ 开始 C++
c语言·c++·学习