您的位置:首页 > 房产 > 家装 > 建设摩托车110报价大全_免费网络推广方法_天津seo外包团队_数据分析师报考条件

建设摩托车110报价大全_免费网络推广方法_天津seo外包团队_数据分析师报考条件

2024/12/22 14:24:17 来源:https://blog.csdn.net/weixin_45593273/article/details/144490629  浏览:    关键词:建设摩托车110报价大全_免费网络推广方法_天津seo外包团队_数据分析师报考条件
建设摩托车110报价大全_免费网络推广方法_天津seo外包团队_数据分析师报考条件

在SpringBoot项目开发过程中,我们常常会使用各种starter来快速集成不同的功能,简化配置,提高开发效率。本文将带你手动实现一个Spring Boot的starter。

什么是SpringBoot的starter?

Spring Boot 的 starter 本质上是一种依赖管理和自动配置的机制。它将一组相关的依赖库整合在一起,并提供了默认的配置,使得开发者在需要使用特定功能时,只需简单地在项目中引入对应的 starter,Spring Boot 就能自动完成配置,让相应的功能开箱即用,无需手动去配置繁多复杂的各种依赖参数。

常用的SpringBoot的starter

Spring Boot 官方提供了大量丰富的 starter,涵盖了众多不同的应用场景,以下是一些比较常用的:

1. spring-boot-starter-web

用于构建 Web 应用程序的基础 starter。引入它后,Spring Boot 会自动配置好内嵌的 Web 服务器(比如 Tomcat、Jetty 等),并整合 Spring MVC 框架,方便我们快速开发 RESTful API 或者传统的 Web 页面应用。它内部包含了处理 HTTP 请求、视图解析、静态资源管理等相关的依赖和配置

2. spring-boot-starter-actuator

提供应用程序监控和管理功能,例如健康检查、度量指标和更多信息的端点。

3. spring-boot-starter-security

提供安全功能支持,包括基本身份认证和授权。

4. spring-boot-starter-test

用于项目的测试环节,整合了如 JUnit、Mockito、Spring Test 等一系列测试相关的库和工具,方便我们编写单元测试、集成测试等不同类型的测试用例,确保项目的功能正确性和稳定性。

5. spring-boot-starter-logging:

默认包含在Spring Boot项目中,用于日志功能,整合了Logback和Java Util Logging。

6. spring-boot-starter-validation:

用于Bean验证的支持,集成Hibernate Validator。

7. spring-boot-starter-aop

支持面向切面编程(AOP),提供了 Spring AOP 的相关依赖。

8. spring-boot-starter-jdbc

用于使用 JDBC 访问数据库,提供了 DataSource 和 JDBC Template 的配置。

9. spring-boot-starter-redis

用于与 Redis 数据库交互,支持缓存、队列等功能。

10. spring-boot-starter-data-mongodb

用于集成MongoDB数据库支持。

11. spring-boot-starter-cache

用于启用缓存支持,支持多种缓存方案(如EhCache、Caffeine等)。

如何从0-1写一个starter?

1. 确定starter的功能和依赖

首先要明确想要的这个 starter 实现的具体功能是什么,比如是用于连接某个特定的第三方服务,还是提供一种特定的业务逻辑组件等。然后根据这个功能需求,梳理出需要引入哪些依赖库

本文实现了一个集成了各种常用HTTP客户端的starter,可以显著简化开发者在不同项目中对HTTP客户端的使用和配置,以下是具体实现步骤。

SpringBoot常用Http客户端的异同可见《SpringBoot 项目高效 HTTP 通信:常用客户端大比拼!》

2. 创建maven项目

使用maven创建的springboot项目的目录结构如下。

http-toolkit-starter/├── src/│   ├── main/│   │   ├── java/│   │   │   └── com/zk/httptoolkit/│   │   │       ├──HttpToolkitStarterAutoConfiguration.java│   │   │       └──...(其他相关类)│   │   └── resources/│   │       ├── META-INF/│   │       │   └── spring.factories│   │       └── application.yml(用于默认配置)│   └── test/(用于编写测试用例)├── pom.xml(Maven 项目)└── README.md(项目说明文档)

其中,HttpToolkitStarterAutoConfiguration.java 这个类是实现自动配置功能的核心,spring.factories 文件则用于告诉 Spring Boot 在启动时去加载我们定义的自动配置类。

3. 创建自动配置类

为每个集成的HTTP客户端创建一个自动配置类,包括:

  • Apache HttpClient
  • OkHttp
  • RestTemplate(Spring自带)
  • WebClient(Spring WebFlux)

本文以Apache HttpClient为例,其它三个都类似,就不再一一赘述了。

@Configuration
@ConditionalOnClass(HttpClient.class) // 只在类路径下有HttpClient时激活
@EnableConfigurationProperties(HttpClientProperties.class)
public class HttpClientAutoConfiguration {@Bean@ConditionalOnMissingBean  // 如果容器中不存在 HttpClient 类型的 Bean,则创建一个public HttpClient createHttpClient(HttpClientProperties properties) {RequestConfig config = RequestConfig.custom().setConnectTimeout(properties.getConnectTimeout()).setSocketTimeout(properties.getSocketTimeout()).build();return HttpClients.custom().setDefaultRequestConfig(config).build();}
}

4. 创建配置属性类

@ConfigurationProperties(prefix = "http.toolkit")
public class HttpClientProperties {private int connectTimeout = 1000;private int socketTimeout = 3000;// Getters and Setters
}

5. 配置 spring.factories 文件

在 src/main/resources/META-INF 目录下创建 spring.factories 文件,内容格式如下:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.example.HttpClientAutoConfiguration

这个文件的作用是让 Spring Boot 在启动时扫描到我们定义的自动配置类,从而应用相应的配置。

6. 构建和测试项目

使用 Maven 构建工具将项目打包成 jar 文件,然后在一个测试的 Spring Boot 项目中引入这个 jar 文件作为依赖,启动项目,观察是否按照预期完成了自动配置,功能是否正常工作。同时,编写相应的单元测试和集成测试用例来验证 starter 的各项功能是否正确可靠。

如何引入自己写的starter

引入最常用的有两种方式,一种是本地引入,一种是发布到远程仓库。

1. 本地引入

  • 安装到本地Maven仓库
    在 starter 项目根目录下执行 mvn clean install 命令即可。
mvn clean install
  • 在其它项目中引用
    然后,在其它的Spring Boot项目中,通过pom.xml添加依赖项:
<dependency><groupId>com.zk</groupId><artifactId>http-toolkit-starter</artifactId><version>1.0.0-SNAPSHOT</version>
</dependency>

2. 发布到远程仓库(nexus或artifactory)

  • 发布到公司私有Maven仓库
<distributionManagement><repository><id>internal.repo</id><url>http://your-company-repo/repository/internal</url></repository>
</distributionManagement>

使用以下命令发布:

mvn clean deploy
  • 在项目中引用远程库
    一旦发布到远程仓库,其他项目可以像普通依赖一样在pom.xml里添加:
<dependency><groupId>com.zk</groupId><artifactId>http-toolkit-starter</artifactId><version>1.0.0-SNAPSHOT</version>
</dependency>

除了上述两种方式,还有一种方式,我们可以将Starter的Jar文件手动复制到另一个项目的libs目录,并在pom.xml中通过systemPath引用:

<dependency><groupId>com.zk</groupId><artifactId>http-toolkit-starter</artifactId><version>1.0.0-SNAPSHOT</version><scope>system</scope><systemPath>${project.basedir}/libs/http-toolkit-starter-1.0.0-SNAPSHOT.jar</systemPath>
</dependency>

这种方式一般不推荐在生产环境使用,只适用于本地学习和测试用

通过以上步骤,我们便成功地实现了一个自定义的Spring Boot starter,并且能够在项目中方便地引入和使用。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com