当前位置:   article > 正文

谈一谈,Spring Boot 中的 starter 到底是什么 ?_springbootstarter

springbootstarter

1. 为什么要用Starter?

  • 现在我们就来回忆一下,在还没有Spring-boot框架的时候,我们使用Spring 开发项目,如果需要某一个框架,例如mybatis,我们的步骤一般都是:
  • 到maven仓库去找需要引入的mybatis jar包,选取合适的版本
  • 到maven仓库去找mybatis-spring整合的jar包,选取合适的版本
  • 在spring的applicationContext.xml文件中配置dataSource和mybatis相关信息
  • 假如所有工作都到位,一般可以完成;但很多时候都会花一堆时间解决jar冲突,配置项缺失,导致怎么都启动不起来等等问题。

所以在2012 年 10 月,一个叫 Mike Youngstrom 的人在 Spring Jira 中创建了一个功能请求,要求在 Spring Framework 中支持无容器 Web 应用程序体系结构,提出了在主容器引导 Spring 容器内配置 Web 容器服务;这件事情对 SpringBoot 的诞生应该说是起到了一定的推动作用。

所以SpringBoot 设计的目标就是简化繁琐配置,快速建立Spring 应用。

  • 然后在开发Spring-boot 应用的时候, 经常可以看到我们的pom 文件中引入了spring-boot-starter-web、spring-boot-starter-data-redis、mybatis-spring-boot-starter 这样的依赖,然后几乎不用任何配置就可以使用这些依赖的功能。
  • 下面我们就先来尝试自己开发一个Starter。

2. 命名规范

在使用spring-boot-starter,会发现,有的项目名称是 XX-spring-boot-starter,有的是spring-boot-starter-XX,这个项目的名称有什么讲究呢?从springboot官方文档摘录:

这段话的大概意思就是,麻烦大家遵守这个命名规范:

Srping官方命名格式为:spring-boot-starter-{name}

非Spring官方建议命名格式:{name}-spring-boot-starter

3. 开发示例

下面我就以记录日志的一个组件为示例来讲述开发一个starter 的过程。

3.1 新建工程

首先新建一个maven 工程,名称定义为jd-log-spring-boot-starter

3.2 Pom 引入依赖

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.5.13</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.jd</groupId>
  12. <artifactId>jd-log-spring-boot-starter</artifactId>
  13. <version>1.0-SNAPSHOT</version>
  14. <name>jd-log-spring-boot-starter</name>
  15. <url>http://www.example.com</url>
  16. <properties>
  17. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  18. <maven.compiler.source>1.8</maven.compiler.source>
  19. <maven.compiler.target>1.8</maven.compiler.target>
  20. </properties>
  21. <dependencies>
  22. <!-- 提供了自动装配功能-->
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-autoconfigure</artifactId>
  26. </dependency>
  27. <!-- 在编译时会自动收集配置类的条件,写到一个META-INF/spring-autoconfigure-metadata.json中-->
  28. <dependency>
  29. <groupId>org.springframework.boot</groupId>
  30. <artifactId>spring-boot-configuration-processor</artifactId>
  31. </dependency>
  32. <!--记录日志会用到切面,所以需要引入-->
  33. <dependency>
  34. <groupId>org.springframework.boot</groupId>
  35. <artifactId>spring-boot-starter-aop</artifactId>
  36. </dependency>
  37. <dependency>
  38. <groupId>org.projectlombok</groupId>
  39. <artifactId>lombok</artifactId>
  40. </dependency>
  41. </dependencies>
  42. <build>
  43. <
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号