准备工作
准备一个springboot2.x的工程,并引入web和spring-data-redis的starter,再引入对象池commons-pool2的依赖。如图:
空starter jar包的用意
有心的朋友如果去查看spring-data-redis的starter对应的jar包spring-boot-starter-data-redis-2.1.3.RELEASE.jar时,发现它是一个空的,这是为何呢?如图:
这与springboot的工作原理有关,springboot引入了一个核心机制就是,AutoConfiguration,自动配置。那自动配置的依据是什么呢?就是看看你都引入了哪些jar包,或者检测某些特定的Class是否存在。
所以这个空jar包就相当于一个“标识物”,只要它存在,就相当于告诉springboot我要使用spring-data-redis了,你给我自动配置吧。此外它还有一个作用就是把需要的相关依赖给引入进来。
自动配置大揭秘
因为redis早已成为互联网开发的标配,所以spring官方很早就整合了redis,在spring data这个项目里叫spring-data-redis。springboot官方自然也提供了对spring-data-redis的自动配置,毕竟是自家的项目嘛。
凡是由springboot官方提供的自动配置,相关配置代码都在这个spring-boot-autoconfigure-2.1.3.RELEASE.jar包里,如图:
在这里可以找到和spring-data-redis相关的配置代码,如图:
1)配置数据
虽然springboot能帮我们自动配置,但我们还是要提供一些配置数据的。这些数据一般都放到application.yml配置文件里。spring-data-redis的配置数据如下图:
上图中的这种层级结构其实是预先定义好的,它和RedisProperties这个类保持一致,如图: