1.springboot出现以及带来的好处
如果还不懂什么是springboot,请自行百度O(∩_∩)O
相信大家用过springboot都应该多多少少能感觉到用springboot开发带来的好处,容易上手,开发速度快,开箱即用;再也不必搞那些繁琐的配置了,想集成什么直接引用对应的starter就可以了;
例如:我想在项目中使用redis数据库
第一步:引入对应的包
第二部:配置文件(application.properties)添加属性
spring.redis.database=2
spring.redis.host=localhost
spring.redis.lettuce.pool.maxActive=5
spring.redis.lettuce.pool.maxIdle=5
第三部:直接引用
@Autowired
private RedisTemplate<String, Coffee> redisTemplate;
第四部:就可以在程序中使用redisTemplate了(前提你的开启redis数据库)
以上就是在springboot项目中使用redis的大体步骤,具体网上一大堆例子~
2.你有没有想过为什么可以直接使用redisTemplate?springboot到底做了什么?
首先,既然可以直接@Autowired到redisTemplate,说明在springboot容器中一定存在一个redisTemplate
那么springboot是怎么自动创建redisTemplate的?下面让我们来一看究竟~
在看源码之前,大家先想一下,我们在创建自己的bean对象时是怎么做的?
1.扫描指定的包
2.使用注解做标记(@bean,@Configuration,@Service,@Controller,@RestController 等等...)
3.spring会在应用启动时,自动扫描指定的包,然后找出注解标注的类,创建实例对象,保存在spring容器中
4.这样在项目中我们就可以通过@Autowired @Resource引入使用了
如果你了解以上的原理,那了解springboot自动装载的一些实体对象就很好理解了,其实原理就和上面的一样;
大家再想一个问题,如果没有redisTemplate,纯手工创建一个redisTemplate你会怎么做?
1.在配置中写好配置;例如:url,port,password...等等
2.然后程序读取配置信息
3.通过读取到的配置信息,创建Factory,然后再创建redisTemplate
其实springboot就是把我们手动写的代码,直接给我们封装好了
首先看一个大体的流程图:
源码部分片段:
看到这些你有没有什么想法?是不是觉得挺简单的?
1.首先RedisProperties类就是来存储的一些配置信息;看源码
2.RedisConnectionConfiguration连接配置类;
JedisConnectionConfiguration:是RedisConnectionConfiguration子类;
LettuceConnectionConfiguration:是RedisConnectionConfiguration子类;
连接redis有两个连接客户端,一个就是jedis,一个就是lettuce,以上两个分别是对象的配置类
以上两个配置类中都有一个创建redisConnectionFactory方法;
JedisConnectionConfiguration:
LettuceConnectionConfiguration:
从以上源码可以看出分别创建对应的Factory;
3.RedisAutoConfiguration类,从类名大体就应该知道什么意思了,英语不太好O(∩_∩)O Auto还是认识的;看一下里面的源码~
看画红线部分,如果容器中没有就会创建;反之则不会创建~这才是我们能直接引入redisTemplate的关键~
以上纯属个人观点~如有不对之处请批评指正!!!