SpringBoot 响应头添加版本号、打包项目后缀添加版本号和时间

文章目录

  • 响应头添加版本号
    • 获取版本号
    • 添加响应处理器
    • 请求结果
  • 打包项目后缀添加版本号和时间
    • 实现
    • 打包结果


响应头添加版本号

获取版本号

pom.xml 中,在 project.version 下定义版本号

SpringBoot 响应头添加版本号、打包项目后缀添加版本号和时间_第1张图片

application.yml 获取 pom.xmlproject.version 中的信息

SpringBoot 响应头添加版本号、打包项目后缀添加版本号和时间_第2张图片

添加响应处理器

完整代码如下:

通过 @Value("${project.version}") 获取 application.yml 中的 project.version,并写入响应头

import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.http.server.ServletServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;

@ControllerAdvice
public class GlobalResponseBodyHandler implements ResponseBodyAdvice<Object> {

    @Value("${project.version}")
    private String version;

    @Override
    public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
        return true;
    }

    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {

        ServletServerHttpResponse ssResp = (ServletServerHttpResponse) response;

        HttpServletResponse resp = ssResp.getServletResponse();
        resp.setHeader("version", StringUtils.isNotEmpty(version) ? version : "unknown");

        return body;
    }
}

请求结果

SpringBoot 响应头添加版本号、打包项目后缀添加版本号和时间_第3张图片

打包项目后缀添加版本号和时间

实现

pom.xml 中的 build 标签,写入以下代码

<build>
    
    <finalName>${project.artifactId}-${project.version}_${current.time}finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-maven-pluginartifactId>
            <configuration>
                <mainClass>com.chh.api.ChhApplicationmainClass>
                <executable>trueexecutable>
            configuration>
        plugin>

        <plugin>
            <groupId>org.codehaus.mojogroupId>
            <artifactId>build-helper-maven-pluginartifactId>
            <version>3.0.0version>
            <executions>
                <execution>
                    <id>timestamp-propertyid>
                    <goals>
                        <goal>timestamp-propertygoal>
                    goals>
                execution>
            executions>
            <configuration>
                <name>current.timename>
                <pattern>yyyyMMdd-HHmmsspattern>
                <timeZone>GMT+8timeZone>
            configuration>
        plugin>

        
        <plugin>
            <groupId>org.apache.maven.pluginsgroupId>
            <artifactId>maven-surefire-pluginartifactId>
            <configuration>
                <skip>trueskip>
            configuration>
        plugin>
    plugins>
build>

打包结果

SpringBoot 响应头添加版本号、打包项目后缀添加版本号和时间_第4张图片

你可能感兴趣的:(Java,springboot,java)