本文介绍: Spring Boot Starter 是一种Maven 或 Gradle 依赖,它能够轻松地将相关库和框架集成到 Spring Boot 应用程序中。Starter 是一种对常见依赖项和设置的易于复用封装,它们。你可以从 Spring 官网下载不同类型的 Starters,或者通过使用 Spring Initializr 在你的 Spring Boot 项目添加 Starters。同时,你也可以编写自己的 Starter,用于封装自己类库框架,并帮助其他开发人员更容易地使用它们。

什么spring boot starter

        Spring Boot Starter 是一种 Maven Gradle 依赖,它能够轻松地将相关库和框架集成到 Spring Boot 应用程序中。Starter 是一种对常见依赖项和设置的易于复用的封装,它们通常被开发人员用于创建可插拔的 Spring Boot 应用程序

        你可以从 Spring 官网下载不同类型的 Starters,或者通过使用 Spring Initializr 在你的 Spring Boot 项目添加 Starters。同时,你也可以编写自己的 Starter,用于封装自己的类库和框架,并帮助其他开发人员更容易地使用它们。

        总之,Spring Boot Starter 是一种强大的工具,它可以让你快速构建强大的 Spring Boot 应用程序,减少开发集成工作量提高代码的可重用性和可维护性

        例如,当我们需要调用其他项目或服务http接口时。可能会使用到FeginCLient、WebCleint、HttpClient、RestTemplate等。这些接口或工具都可以实现不同服务http接口之间调用,现在我们就可以使用httpClient来封装一个可以实现远程接口调用的Starter。

新建idea项目

        新建spring boot starter项目时,和创建普通的idea项目一样File > New > Project。项目类型选择quikstart

        新建完成目录结构如下

        文件目录说明

pom文件配置

        这里需要引入spring-boot-starterhttpclient

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>springboot-test-starter</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>springboot-test-starter</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>2.5.4</version>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.13</version>
    </dependency>
  </dependencies>
</project>

HttpClient

        新建HttpClient类,该类利用CloseableHttpClient 接口实现。在HttpClient新建一个单例对象closeableHttpClient用来请求http接口。以及两个字符属性prefix服务器路径http://xxx.com:port/)和path请求接口的路径)。

        HttpClient中使用execute方法实现http接口调用

package org.example.config;

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

import java.io.IOException;

public class HttpClient {

    private static CloseableHttpClient closeableHttpClient;

    private String path;

    private String prefix;


    public void createDefault(){
        closeableHttpClient = HttpClients.createDefault();
    }
    public CloseableHttpResponse execute() throws IOException {
        if(closeableHttpClient == null){
            closeableHttpClient = HttpClients.createDefault();
        }
        return closeableHttpClient.execute(new HttpGet(String.format("%s%s",prefix,path)));
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public String getPrefix() {
        return prefix;
    }

    public void setPrefix(String prefix) {
        this.prefix = prefix;
    }
}

HttpRequestProperties

        该类用来加载项目中http.server开头的接口配置

package org.example.config;

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties("http.server")
public class HttpRequestProperties {

    private String ip;

    private String port;

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    public String getPort() {
        return port;
    }

    public void setPort(String port) {
        this.port = port;
    }
}

HttpRequestFactory

        该类starter加载类,新建该类的同时还需要spring.factories添加如下配置

        该配置用于声明 Spring Boot 自动配置的实现类。添加配置spring boot就会自动从HttpRequestFactory加载组件

        HttpRequestFactory.java详细实现:

package org.example.config;


import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableConfigurationProperties(HttpRequestProperties.class)
public class HttpRequestFactory {
    @Bean
    public HttpClient getHttpClient(HttpRequestProperties properties){
        HttpClient client = new HttpClient();
        client.createDefault();
        client.setPrefix(String.format("http://%s:%s/",properties.getIp(), properties.getPort()));
        return client;
    }

}

打包使用

        使用mavenpackage命令即可starter项目打成jar包。

        打包完成后把springbootteststarter-1.0-SNAPSHOT.jar添加到其他项目中,并且在springboot项目中添加如下配置即可使用:


http:
  server:
    # your server ip
    ip: localhost 
    # your server port
    port: 8081

        使用方法

        注入httpClient:

@Autowired
private HttpClient httpClient;

        调用http://localhost:8081/test 接口

httpClient.setPath("/test");
CloseableHttpResponse response = httpClient.execute();
HttpEntity entity = response.getEntity();
String responseText = EntityUtils.toString(entity);

原文地址:https://blog.csdn.net/u012961612/article/details/134764846

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_36360.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注