事务
Spring 提供了两种事务管理方式,编程式事务和声明式事务
编程式事务就是我们要手动调用事务的开始、提交、回滚这些操作,虽然灵活但是代码比较繁琐
声明式事务只需要在需要事务的方法上加上 @Transactional 注解就好了,Spring 会帮我们自动处理事务的整个生命周期
声明式事务原理
Spring 的声明式事务管理是通过 AOP 和代理机制实现的,大致可以分为两个阶段
第一个阶段发生在 Spring 容器启动时,它会扫描所有的 Bean
好好学习,天天向上
Spring 提供了两种事务管理方式,编程式事务和声明式事务
编程式事务就是我们要手动调用事务的开始、提交、回滚这些操作,虽然灵活但是代码比较繁琐
声明式事务只需要在需要事务的方法上加上 @Transactional 注解就好了,Spring 会帮我们自动处理事务的整个生命周期
Spring 的声明式事务管理是通过 AOP 和代理机制实现的,大致可以分为两个阶段
第一个阶段发生在 Spring 容器启动时,它会扫描所有的 Bean
MVC 全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范
用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑
Spring MVC 是 Spring 框架对 MVC 模式的具体实现,专门用于构建 Web 应用
MVC → 一种设计思想(模式)
Spring MVC → Spring 对这个思想的落地实现
请求进来
↓
DispatcherServlet(前端控制器,所有请求的入口)
↓
HandlerMapping(找到对应的 Controller)
↓
Controller(处理请求,调用 Service)
↓
返回 ModelAndView / JSON
↓
响应给客户端
传统 MVC: 前后端分离:
Controller Controller
↓ ↓
返回 ModelAndView 返回 JSON 数据
↓ ↓
服务端渲染 HTML 前端自己渲染页面
RESTful(Representational State Transfer,表现层状态转化)本身并不是一种标准、协议或技术,而是一种软件架构风
当一个 Web 服务(API)的设计符合 REST 架构风格时,我们就称它为 RESTful API
简单来说,RESTful 提倡用 URL 定位资源,用 HTTP 动词(GET, POST, PUT, DELETE 等)描述操作
在 REST 理念中,网络上的所有事物都被抽象为“资源”。一个资源可以是一个实体(如用户、订单、文章),也可以是一个集合(如用户列表)。
Spring Boot 可以说是 Spring 生态的一个重大突破,它极大地简化了 Spring 应用的开发和部署过程
以前我们用 Spring 开发项目的时候,需要配置一大堆 XML 文件,包括 Bean 的定义、数据源配置、事务配置等等,非常繁琐
而且还要手动管理各种 jar 包的依赖关系,很容易出现版本冲突的问题, 部署的时候还要单独搭建 Tomcat 服务器,整个过程很复杂
Spring Boot 就是为了解决这些痛点而生的
“约定大于配置”是 Spring Boot 最核心的理念
@Import它的核心作用是:将指定的类、配置类或动态生成的 Bean 注册到 Spring 的 IoC 容器中
@ComponentScan 只能扫描你项目包路径下的类。但如果你想导入一个外部 jar 包里的类,或者一个不在扫描路径下的配置类,@ComponentScan 就够不着了。
@Import 就是解决这个问题的。
@Configuration 类目的: 根据引入的 Starter 依赖,自动把相关的 Bean 注册到容器,省去手动配置
@SpringBootApplication 是入口,它是个组合注解,其中 @EnableAutoConfiguration 负责开启自动配置。
@EnableAutoConfiguration 内部通过 @Import(AutoConfigurationImportSelector.class) 引入了核心选择器。
Starter 的核心思想是把相关的依赖打包在一起,让开发者只需要引入一个 starter 依赖,就能获得完整的功能模块
当我们在 pom.xml 中引入一个 starter 时,Maven 就会自动解析这个 starter 的依赖树,把所有需要的 jar 包都下载下来
每个 starter 都会包含对应的自动配置类,这些配置类通过条件注解来判断是否应该生效
比如当我们引入了 spring-boot-starter-web,它会自动配置 Spring MVC、内嵌的 Tomcat 服务器等