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 依赖,增加配置值后即可使用。

相关推荐
南宫生1 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
sanguine__2 小时前
Web APIs学习 (操作DOM BOM)
学习
数据的世界014 小时前
.NET开发人员学习书籍推荐
学习·.net
四口鲸鱼爱吃盐4 小时前
CVPR2024 | 通过集成渐近正态分布学习实现强可迁移对抗攻击
学习
OopspoO6 小时前
qcow2镜像大小压缩
学习·性能优化
A懿轩A6 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
居居飒7 小时前
Android学习(四)-Kotlin编程语言-for循环
android·学习·kotlin
kkflash37 小时前
提升专业素养的实用指南
学习·职场和发展
1 9 J8 小时前
数据结构 C/C++(实验五:图)
c语言·数据结构·c++·学习·算法
6.949 小时前
Scala——身份证号码查询籍贯
学习·scala