传送门:
Spring Data JPA从入门到精通(第一部分)
Spring Data JPA从入门到精通(第二部分)
Spring Data JPA从入门到精通(第三部分)
所有代码均源自spring-data#2.2.6版本
第9章 IntelliJ Idea与Spring JPA
- DataBase插件,可直连数据库
- 感觉Navicat活着DataGrip更棒.
- Persistence及JPA插件
- 生成Hibernate.xml
- 进入Entity界面,即可生成ER图,编辑表.
- 地下Spring的Tab,有整个项目的Repository列表
- Idea 视图: Hierarchy,Sturcture,Diagrams,Debug
第10章 Spring Data Redis
- Jedis使用
- 基本使用(直接用JedisClient)
- 连接池(使用JedisPool)
- 高可用(Pool加哨兵重连)
- 客户端分片(使用ShardedJedisPool)
- 使用场景(加缓存处理)
- Spring boot + Spring Data Jedis
Spring Boot已经自带了RedisAutoConfiguration,它会生成一个JedisConnectionFactory,里面已经完成了JedisPool的配置.(读取spring.redis配置),并绑定到RedisTemplate上,这样我们直接注入模板类即可使用Redis了.
- Spring Data Jedis结合Cache
- 默认Spring的缓存是放在内存里面的,使用Redis在大多数情况是一个更稳妥的方案.
- Spring Cache的核心类是CacheManager,作为Spring提供的各种缓存技术的抽象接口
- @Cacheable注解的使用,提供先从缓存找,找不到再实际执行的逻辑
public @interface Cacheable {
//应用到Cache的名字,可以有多个Cache存在,也可应用于不同的Cache
//如可同时使用EChache和Redis
@AliasFor("cacheNames")
String[] value() default {};
String[] cacheNames() default {};
//核心配置,缓存的名字,里面可以Spel.
String key() default "";
String keyGenerator() default "";
//不仅Cache可以有多个,连Manager也可以多个
String cacheManager() default "";
String cacheResolver() default "";
//被缓存满足的条件,里面可以Spel.
String condition() default "";
//不缓存的条件,里面可以Spel.
String unless() default "";
boolean sync() default false;
}
- @CachePut,@CacheEvict,@Caching
- Spring Boot已经自带了CacheAutoConfiguration + @EnableCacheing即可自动配置,可以自定义CacheConfigurerSupport产生多个CacheManager,也可以实现KeyGenerator自定义缓存的名称.
第11章 SpEl表达式
-
SPEL介绍: Spel是Spring提供表达式语言,他能灵活地进行表达式求值.注意同${}开头的属性求值不懂,Spel注重的是Bean的求值.
-
基础语法: 逻辑运算,数学运算,Bean方法调用,正则表达式,List和Map操作
-
主要的类
- ExpressionParser: 解析字符串为Expression
- ParserContext: 提供Parser的上下文,其默认实现TemplateParserContext指明了"#{"开头,"}"结尾.
public TemplateParserContext() {
this("#{", "}");
}
- EvaluationContext: 提供在表达式求值中的解析属性,方法,字段的值和类型,其默认实现StandardEvaluationContext使用了反射完成其功能.
- SpelParserConfiguration: 编译器配置
- Spring Data JPA中使用SpEl场景
- 在Query注解中使用#entityName保留字作为查询表名,使用#"参数名"直接读取查询参数
- 在@Cacheable和@CachePut中读取参数或存储值
- @Value中读取配置信息,如#{systemProperties['somePorp']}读取系统属性.
第12章 Spring Data Rest
- Spring Data Rest 相当强大,只需要定义Repository,有Spring Data Rest中的RepositoryRestHandlerMapping自动生成符合HATEOAS风格的Http Restful 接口.
- 通过在Repository上配置@RepositoryRestResource和在Entity上配置@RestResource修改默认的Restful配置
- RepositoryRestMvcAutoConfiguration自动配置.
- 既然HATEOAS风格本身就不流行,这个就深度自动化的东西,肯定更难有使用场景了.
附录:
- Repository Query Method关键字: 有个Type枚举
- Repository Query Method返回值类型: 注意有特殊的地理空间信息类GeoResult
- JPA注解,Audit注解,Hibernate的Valid注解
- Spring MVC注解
- JPA在application.yml中的配置(具体可查看reference)












网友评论