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

相关推荐
EterNity_TiMe_1 小时前
【论文复现】(CLIP)文本也能和图像配对
python·学习·算法·性能优化·数据分析·clip
sanguine__1 小时前
java学习-集合
学习
lxlyhwl1 小时前
【STK学习】part2-星座-目标可见性与覆盖性分析
学习
nbsaas-boot1 小时前
如何利用ChatGPT加速开发与学习:以BPMN编辑器为例
学习·chatgpt·编辑器
CV学术叫叫兽2 小时前
一站式学习:害虫识别与分类图像分割
学习·分类·数据挖掘
我们的五年2 小时前
【Linux课程学习】:进程程序替换,execl,execv,execlp,execvp,execve,execle,execvpe函数
linux·c++·学习
一棵开花的树,枝芽无限靠近你2 小时前
【PPTist】添加PPT模版
前端·学习·编辑器·html
VertexGeek3 小时前
Rust学习(八):异常处理和宏编程:
学习·算法·rust
二进制_博客3 小时前
Flink学习连载文章4-flink中的各种转换操作
大数据·学习·flink
codebolt4 小时前
ADS学习记录
学习