美文网首页
springboot自动装载浅谈(01)

springboot自动装载浅谈(01)

作者: 盛京最帅得仔 | 来源:发表于2019-03-26 13:31 被阅读0次

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的关键~

以上纯属个人观点~如有不对之处请批评指正!!!

相关文章

网友评论

      本文标题:springboot自动装载浅谈(01)

      本文链接:https://www.haomeiwen.com/subject/elfgvqtx.html