springboot
spring到spring boot
- 限定性框架和非限定性框架
- spring boot功能特性:
- 创建独立运行的spring应用
- 直接嵌入web容器,不需要部署war包
- 提供限定性的starter依赖简化配置(就是脚手架)
- 在必要时自动化配置spring和其他三方依赖库,使用ConditionalOnProperty中属性=true时才会自动化配置
- 提供生产production-ready(线上运维)特性,例如指标度量,将抗检查,外部配置
- 完全零代码生产和不需要xml配置
springboot核心原理
- 自动化配置:简化配置核心,基于Configuration,EnableXX,Condition
- yml->COnfiguration->Bean
- 默认通过spring.profiles.active属性来决定运行环境时的配置文件
- EnableAutoConfiguration默认对于依赖的starter进行自动装载
- 自动化装配
- 在启动类上加@EnableAutoConfiguration注解
- 在配置类上加@Configuration注解,申明为配置类,加@Import注解可以引用其他的配置文件
- 在src/main/resources/META-INF/spring.factories 中声明:spring…EnableAutoConfiguration=\配置类
- 是spring-boot-starter:脚手架核心,整合各种第三方类库
- 条件化自动配置
1.ConditionalOnBean
springboot starter
- 在类中声明@Config
- 在spring.factories中声明该类为start,spring.provides中注册该starter
orm技术
JDBC
- DataSource–Pool
- DriverManager
- Connection
- Statement
- ResultSet
Hibernate
- hubernate里可以使用Hql,Critertal,Native SQL三种方式来操作数据库
MyBatis
JPA
java持久化框架,是一套基于orm的规范,开发时借鉴了hibernate,所以Hubernate天生是jpa的实现,核心EntityManager
spring jdbc和orm
- spring jdbc :内部支持jdbc template和hubernate
- spring orm: 支持jpa
- spring data:支持各种sql
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的结合
- 本地事务
- 多数据源(配置、静态制定、动态切换)
- 数据库池配置(大小、重连)
- ORM 内的复杂 SQL,级联查询
- ORM 辅助工具和插件