始于框架,但不止于框架,涉及到各行业
设计理念:
actuator检测接口是否正常、是否是模板、查看容器创建的beans
DataSourceAutoConfiguration 配置 DataSource
DataSourcreTransactiopnManagerAutoConfiguration 配置 DataSourceTransactionManager
JdbcTemplateAutoConfiguration 配置 JabdTemplate
spring boot 2.x默认使用HikaraCP
spring boot 1.x默认使用tomcat连接池,如果使用其它的连接池,需要移除tomcat-jdbc依赖
HikariCP
速度提升:
常见的配置:(看源码DatasourceConfiguration.class)
Alibaba Druid(内置强大的监控功能,监控特性不影响性能;能防止sql注入,内置Logging能诊断Hack入侵应用行为;spring boot2.x需要在spring-jdbc包中排除HikariCP连接池)
使用功能:
配置:(依赖gruid-spring-boot-starter)
包:spring-jdbs
@EnableTransactionManagement 【开启事务管理】
一致的事务模型(JDBC / Hibernate/ myBatis)(DataSource / JTA)
事务抽象的核心接口PlatformTransactionManager(DataSourceTransactionManager 、 HibernateTransastionManager 、 JtaTransactionManager)===》commit方法、rollback方法
TransationDefinition(Propagation【传播特性】、Isolation(隔离级别)、Timeout(超时)、Read-only status(只读状态))
编程式事务:
TransactionTemplate(TransactionCallback、TransactionCallbackWithoutResult)
PlatformTransactionManager(可以传入TransactionDefinition进行定义)
声明式事务(使用AOP代理):
@EnableTransactionManagement(开启事务注解;proxyTargetClass指定代理类;mode;order事务执行顺序)
@Translational(transactionManager;propagation;isolation;timeout;readout;rollbackFor)
spring会将数据操作的异常转换为DataAccessException,无论使用何总数据访问方式,都能使用一样的异常
相关注解:
@Configuration(声明是配置类)
@ImportResource(引用额外的配置文件)
@ComponentScan(组建扫描)
@Bean(创建bean)
@configurationProperties
@Component、@Repository、@Service、@Controller、@RestController、@RequestMapping
@Autowired(根据类型注入)、@Qualifier(指定注入的bean过滤)、@Resource(根据名称进行注入)、@Value(获取配置信息、找到context上下文配置信息)
Hibernate
JPA(java Persistence API):为对象关系映射提供了一种基于POJO的持久化模型
Spring Data(在保留底层存储特性的同时,提供相对一致的、基于Spring的编程模型)【Spring Data Commons ; Spring Data JDBC ; Spring Data JPA ; Spring Data Redis】
注解
实体:@Entity、@mappedSuperclass【一般属于父类标记】、@Table(name="")【将实体和对应的表关联】
主键:@Id 、@GeneratedValue(strategy,generator)、@SequenceGenerator(name,sequenceName)
映射:@Column(name , nullable , length , insertable , updatable)、@JoinTable(name)、@JoinColumn(name)
关系:@OneToOne、@OneTomany、@ManyToOne、@ManyToMany、@OrderBy【排序】
Loombok常用注解:
@Getter / @Setter 、 @ToString、@NoArgsConstructor / @RequiredArgsConstryctor / @AllargsConstructor
@Data 、 @Builder【生成一个构造方法,进行构造对象】、@Slf4j / @CommonsLog / @Log4j2
@EnableJpaRepositories 【开启jpaResitories】
interface JpaResitory
interface PagingAndSortingRepository
interface CrudRepository
interface Repository
@NoRepositoryBean 【不需要给该类、接口创建bean】
Repository Bean是如何创建的?
接口中的方法是如何被解释的?
mybatis简单配置:
mybatis.mapper-locations=classpath*:mapper/**/*.xml
mybatis.type-aliases-package=类型别名的包名
mybatis.typs-handlers-package=TypeHander扫描报名
mybatis.configuration.map-underscore-to-camel-case=true 【下划线和驼峰命名对应】
@MapperScan 【配置扫描位置】
@Mapper 【定义接口】
@Param 【参数别名】
Mybatis Generator(Mybatis代码生成器;根据数据库表生成相关代码【POJO、Mapper接口、SQL Map XML】)
MongoDB(是一款开源的文档型数据库 https://www.mongodb.com)
Spring 对MongoDB的支持==》spring Data MongoDB(MongoTemplate【MongoDB增删改查】、Repository支持【类似于jpa 的repository】)
@Document、@Id、@EnableMongoRepositories
对应接口【MongoReposity
Redis(是一款开源的内存Key-valus存储,支持多种数据结构)
Spring对Redis的支持【Spring Data Redis(支持的客户端Jedis / Lettuce;RedisTemplate ; Repository支持)】
Jedis客户端注意点:
Redis的哨兵模式(是Redis的一种高可用方案==?监控、通知、自动故障转移、服务发现...)
JedisSentinelPoll(哨兵连接池)
Redis Cluster(Redis的集群模式==》数据自动分片[分成16384个hash slot];在部分节点失效时有一定可用性)
JedisCluster(Jedis只从Master读数据,如果想要自动读写分离,可以定制)
Spring的缓存抽象(为不同的缓存提供一层抽象)
@EnableCaching(开启缓存机制)
@Cacheable(如果有缓存则取,不存在可以取存取)
@CacheEvict(清除缓存)
@CachePut(存放缓存)
@Caching(缓存打包)
@CacheConfig(缓存设置)
Spring与Redis建立连接
LettuceConnectionFactory与JedisConnectionFactory
Spring中Redis的读写分离
Lettuce内置支持读写分离
LettuceClientConfiguration
LettucePollingClientConfiguration
LettuceClientConfigurationBuilderCustomizer
Reids Repository
实体注解:@RedlisHash(类似于@Entity、@Document)、@Id、@indexed(二级索引)
Spring区分Repository方式:
Project Reactor()
*******学习了一半学不下去了,不可否认作者是个技术大牛,但是讲课总带着各种英文专业术语,语速又快,如果有哪些方面没了解过的,很难听得懂,讲的技术又不是很深,一脸懵逼*******