L10:Java框架2 - SpringBoot

【目录】
1.SpringSpring Boot
2.Spring Boot 核心原理*
3.Spring Boot Starter 详解*
4.JDBC 与数据库连接池*
5.ORM-Hibernate/MyBatis*
6.Spring 集成 ORM/JPA*
7.Spring Boot 集成 ORM/JPA
8.10 课总结回顾与作业实践

一 Spring -> SpringBoot

核心:约定大于配置
在这里插入图片描述
SpringBoot简化Spring的方式:

  1. Spring 本身技术的成熟与完善,各方面第三方组件的成熟集成
  2. Spring 团队在去 web 容器化等方面的努力
  3. 基于 MAVEN 与 POM 的 Java 生态体系,整合 POM 模板成为可能
  4. 避免大量 maven 导入和各种版本冲突

现阶段发展方向: Spring - SpringBoot - SpringCloud(云原生)

SpringBoot提供的能力:

  1. 创建独立运行的 Spring 应用
  2. 直接嵌入 Tomcat 或 Jetty,Undertow,无需部署 WAR 包
  3. 提供限定性的 starter 依赖简化配置(就是脚手架)
  4. 在必要时自动化配置 Spring 和其他三方依赖库
  5. 提供生产 production-ready 特性,例如指标度量,健康检查,外部配置等
  6. 完全零代码生产和不需要 XML 配置

二 SpringBoot 核心原理

两大核心原理

  1. 自动化配置:简化配置核心
    ++ 基于 Configuration,EnableXX,Condition
  2. spring-boot-starter:脚手架核心
    ++ 整合各种第三方类库,协同工具

通过application.yaml —> Configuration配置 —> Bean:Starter组件

约定大于配置优势

一、Maven 的目录结构:默认有 resources 文件夹存放配置文件。默认打包方式为 jar
二、默认的配置文件:application.properties 或 application.yml 文件
三、默认通过 spring.profiles.active 属性来决定运行环境时的配置文件
四、EnableAutoConfiguration 默认对于依赖的 starter 进行自动装载
五、spring-boot-start-web 中默认包含 spring-mvc 相关依赖以及内置的 web容器,使得构建一个 web 应用更加简单

自动配置原理

通过注解 @SpringBootApplication --->
@SpringBootApplication 注解功能
SpringBoot 应用标注在某个类上说明这个类是 SpringBoot 的主配置类,SpringBoot 就会运行这个类的 main 方法来启动 SpringBoot 项目:

  • @SpringBootConfiguration
  • @EnableAutoConfiguration
  • @AutoConfigurationPackage
  • @Import({AutoConfigurationImportSelector.class})

加载所有 META-INF/spring.factories 中存在的配置类(类似 SpringMVC 中加载所有 converter)

条件化配置
@ConditionalOnBean
@ConditionalOnClass
@ConditionalOnMissingBean
@ConditionalOnProperty
@ConditionalOnResource
@ConditionalOnSingleCandidate
@ConditionalOnWebApplication

三 SpringBoot Starter 原理

1、spring.provides
2、spring.factories
3、additional–metadata
4、自定义 Configuration 类
以实际项目为例(待补充)

四 JDBC 与数据库连接池

在这里插入图片描述
在这里插入图片描述
连接池分类:Druid,C3P0,DBCP,Hikari
数据库连接池采用的是代理模式

五 ORM 框架(对象关系映射)

Hibernate 和 Mybatis(略)

六 Spring 集成 ORM

JPA 的全称是 Java Persistence API,即 Java 持久化 API,是一套基于 ORM 的规范,内部是由一系列的接口和抽象类构成。
JPA 通过 JDK 5.0 注解描述对象-关系表映射关系,并将运行期的实体对象持久化到数据库中。
核心 EntityManager
在这里插入图片描述
在这里插入图片描述

Spring 事务管理

在这里插入图片描述
JDBC 层,数据库访问层,怎么操作事务?编程式事务管理
Spring 怎么做到无侵入实现事务?声明式事务管理:事务管理器 + AOP

Spring 声明式事务配置参考

事务的传播性:
@Transactional(propagation=Propagation.REQUIRED)
事务的隔离级别:
@Transactional(isolation = Isolation.READ_UNCOMMITTED)
读取未提交数据(会出现脏读, 不可重复读) 基本不使用
只读:
@Transactional(readOnly=true)
该属性用于设置当前事务是否为只读事务,设置为 true 表示只读,false 则表示可读写,默认值为 false。
事务的超时性:
@Transactional(timeout=30)
回滚:
指定单一异常类:@Transactional(rollbackFor=RuntimeException.class)
指定多个异常类:@Transactional(rollbackFor={RuntimeException.class, Exception.class})

七 SpringBoot 集成 ORM

demo示例(略)

八 总结

在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wimb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值