前言

上周看了一篇。你一直在用的Spring Boot Starters究竟是怎么回事(https://www.cnblogs.com/fengzheng/p/10947585.html)
 
感觉终于把所有知识都串在一起了,可能还有些地方比较朦胧,但真相感觉就在眼前,只是随时时间的推移罢了。

Starters

开始之前,我们要理解一下 spring boot starter 是什么呢?
 
实际上 starter 并不会包含多少功能代码,我们可以把它理解成一个「连接包」,按照这个概念来说:
它首先是一个包,一个集合,它把需要用的其他功能组件囊括进来,放到自己的 pom 文件中。
然后它是一个连接,把它引入的组件和我们的项目做一个连接,并且在中间帮我们省去复杂的配置,力图做到使用最简单。
 
比如mybatis-spring-boot-starter,他就是对mybatis的一个封装
druid-spring-boot-starter,就是对druid的一个封装

Starters的原理

命名:

也就是我们使用它的时候在 pom 中引用的 artifactId。命名有有规则的,官方规定:
官方的 starter 的命名格式为 spring-boot-starter-{name} ,例如上面提到的 spring-boot-starter-actuator。
非官方的 starter 的命名格式为 {name}-spring-boot-starter

Spring.factories

在 resource/META-INF 目录下创建名称为 spring.factories 的文件,为什么在这里?当 Spring Boot 启动的时候,会在 classpath 下寻找所有名称为 spring.factories 的文件,然后运行里面的配置指定的自动加载类,将指定类(一个或多个)中的相关 bean 初始化。
例如本例中的配置信息是这样的:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.springcloud.boot.starter.example.RedisAutoConfigure
等号前面是固定的写法,后面就是我们自定义的自动配置类了,如果有多个的话,用英文逗号分隔开。
 public class RedisAutoConfiguration {

     @Bean
@ConditionalOnMissingBean(name = "redisTemplate")
public RedisTemplate<Object, Object> redisTemplate(
RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}
 

RedisProperties

 @ConfigurationProperties(prefix = "spring.redis")
public class RedisProperties { private int database = 0; private String url; private String host = "localhost";
}
 
 
从这里,知识点基本一下子就串起来了。
  • spring.factories里面配置xxxAutoConfigure。利用了Java的SPI,项目一启动就把configure加载进来。
  • RedisAutoConfiguration里面注入了RedisTemplate的bean。这个bean是对Reids一些常用的操作进行封装。(这里注意一下condition的用法)
  • 最后编写RedisProperties把常用的信息封装一个,可以在properties文件里面配置,非常的方便。
 

Spring Boot Starters到底怎么回事?的更多相关文章

  1. Spring Boot Starters介绍

    文章目录 Web Start Test Starter Data JPA Starter Mail Starter 结论 对于任何一个复杂项目来说,依赖关系都是一个非常需要注意和消息的方面,虽然重要, ...

  2. 54 个官方 Spring Boot Starters 出炉!别再重复造轮子了…….

    在之前的文章,栈长介绍了 Spring Boot Starters,不清楚的可以点击链接进去看下. 前段时间 Spring Boot 2.4.0 也发布了,本文栈长再详细总结下最新的 Spring B ...

  3. Spring Boot Starters

    Spring Boot Starters 摘自 https://www.nosuchfield.com/2017/10/15/Spring-Boot-Starters/ 2017-10-15 Spri ...

  4. 你一直在用的 Spring Boot Starters 究竟是怎么回事

    Spring Boot 对比 Spring MVC 最大的优点就是使用简单,约定大于配置.不会像之前用 Spring MVC 的时候,时不时被 xml 配置文件搞的晕头转向,冷不防还因为 xml 配置 ...

  5. Spring Boot Starters 究竟是怎么回事

    Spring Boot 对比 Spring MVC 最大的优点就是使用简单,约定大于配置.不会像之前用 Spring MVC 的时候,时不时被 xml 配置文件搞的晕头转向,冷不防还因为 xml 配置 ...

  6. Spring Boot Starters 列表

    Spring Boot application starters 名称 描述 Pom spring-boot-starter 核心starter,包括自动配置支持,日志和YAML Pom spring ...

  7. Spring Boot Starters启动器

    Starters是什么? Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring及其他技术,而不需要到处找示例代码和依赖包.如你想使用Spring J ...

  8. Spring Boot Starters是什么?

    版权声明:该文转自: http://www.nosuchfield.com/2017/10/15/Spring-Boot-Starters/.版权归原创作者,在此对原作者的付出表示感谢! starte ...

  9. Sping Boot入门到实战之实战篇(二):一些常用功能的Spring Boot Starters

    包含功能 阿里云消息服务MNS 阿里云消息队列服务(即时消息.延迟消息.事务消息) AOP日志 基于MyBatis通用Mapper及DRUID的数据库访问 dubbo支持 错误处理 七牛图片服务 re ...

随机推荐

  1. python-布隆过滤器

    在学习redis过程中提到一个缓存击穿的问题, 书中参考的解决方案之一是使用布隆过滤器, 那么就有必要来了解一下什么是布隆过滤器.在参考了许多博客之后, 写个总结记录一下. 一.布隆过滤器简介 什么是 ...

  2. 【我的物联网成长记6】由浅入深了解NB-IoT

    [摘要] 什么是NB-IoT?NB-IoT有什么优势?NB-IoT能做什么?本文将会从NB-IoT技术的发展历程,技术特点,通信协议,应用场景等方面为您全方面解读NB-IoT技术,了解NB-IoT的独 ...

  3. 上手spring boot项目(二)之spring boot整合shiro安全框架

    题记:在学习了springboot和thymeleaf之后,想完成一个项目练练手,于是使用springboot+mybatis和thymeleaf完成一个博客系统,在完成的过程中出现的一些问题,将这些 ...

  4. 使用 RMI 实现方法的远程调用

    RMI 介绍 RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此 ...

  5. kettle教程---kettle作业调度,附件(excel)配置表名,一个调度完成所有的表操作

    在平时工作当中,会遇到这种情况:复制一个库,几百甚至上千张表,并且无法设置dblink,此时通过kettle可以快速完成该任务. 按照正常的调度,有几百张表,咱们就要写几百个转换去处理,很不科学,下面 ...

  6. 2019沈阳icpc网络赛H德州扑克

    题面:https://nanti.jisuanke.com/t/41408 题意:A,2,3,4,5,6,7,8,9,10,J,Q,K,13张牌,无花色之分,val为1~13. 给n个人名+n个牌,输 ...

  7. 笔记||Python3之异常处理

    异常概念:1 - 代码执行产生错误,无法继续 2 - 在异常前面代码是可以执行的  ---python是解释型的 3 - 异常作用  --- 程序不要退出 - 可以继续执行 同时给予程序员一定的异常提 ...

  8. 在ASP.NET Core中使用托管启动(hosting startup)程序集,实现批量注册service

    在启动ASPNET Core时可以从外部程序集向应用添加增强功能.例如,外部库可以用托管启动( hosting startup) 实现为应用程序提供附加配置(Configuration)或服务(ser ...

  9. 【JS】370- 总结异步编程的六种方式

    点击上方"前端自习课"关注,学习起来~ 作者:Aima https://segmentfault.com/a/1190000019188824 众所周知 JavaScript 是  ...

  10. 【JS】310- 使用 focusout 事件,解决 iOS 键盘收起不归位问题

    点击上方"前端自习课"关注,学习起来~ ,0);            }        }, 这时,我们问题得到解决了,当从输入框输入内容,然后点击键盘的完成收起键盘,效果符合我 ...