spring boot 2.7.9 的 Maven 项目

1、基本配置

环境使用的jdk8  spring boot使用的是2.7.9

2、日志管理

spring boot 默认使用的日志是log4j 如果有其他的日志依赖jar希望剔除掉,比如common-logging的依赖直接去除就行

日志的配置文件logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 说明: 1. 文件的命名和加载顺序有关 logback.xml早于application.yml加载,logback-spring.xml晚于application.yml加载
	如果logback配置需要使用application.yml中的属性,需要命名为logback-spring.xml 2. logback使用application.yml中的属性
	使用springProperty才可使用application.yml中的值 可以设置默认值 -->
<configuration scan="true" scanPeriod="30 seconds">

    <!-- 定义日志的根目录 -->
    <property name="LOG_HOME" value="logs" />
    <!-- 定义日志文件名称 -->
    <property name="demo1" value="demo1"/>
    <property name="demo2" value="demo2"/>
    <property name="demo3" value="demo3"/>

    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
            </pattern>
        </encoder>
    </appender>
    <!-- DEMO1日志文件输出 -->
    <appender name="DEMO1_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${demo1}-%d{yyyy-MM-dd}-%i.log
            </fileNamePattern>
            <maxFileSize>20MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>3GB</totalSizeCap>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n
            </pattern>
        </encoder>
    </appender>
    <!-- DEMO2日志文件输出 -->
    <appender name="DEMO2_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${demo2}-%d{yyyy-MM-dd}-%i.log
            </fileNamePattern>
            <maxFileSize>20MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>3GB</totalSizeCap>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n
            </pattern>
        </encoder>
    </appender>

    <!-- DEMO3日志文件输出 -->
    <appender name="DEMO3_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${demo3}-%d{yyyy-MM-dd}-%i.log
            </fileNamePattern>
            <maxFileSize>20MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>3GB</totalSizeCap>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n
            </pattern>
        </encoder>
    </appender>
    <!-- ************************LOGGER开始****************************** -->
    <!-- 全局日志记录器 -->
    <!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>

    <!-- 指定项目中某个包,当有日志操作行为时的日志记录级别 -->
    <!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE -->
    <!-- additivity=false 表示匹配之后,不再继续传递给其他的logger -->
    <logger name="com.test.demo1" level="DEBUG" additivity="false">
        <appender-ref ref="DEMO1_FILE" />
        <appender-ref ref="STDOUT" />
    </logger>
    <logger name="com.test.demo2" level="DEBUG" additivity="false">
        <appender-ref ref="DEMO2_FILE" />
        <appender-ref ref="STDOUT" />
    </logger>
    <logger name="com.test.demo3" level="DEBUG" additivity="false">
        <appender-ref ref="DEMO3_FILE" />
        <appender-ref ref="STDOUT" />
    </logger>
</configuration>

3、打包部署(3种方式)

1)直接打包jar

spring boot 默认的打成的是jar ,依赖和配置文件都在里面

启动脚本

 #/bin/bash
project="demo"
datetime=$(date +"%Y-%m-%d_%H-%M-%S")
filename="all_${project}_${datetime}.log"
touch "logs/${filename}"
echo "-----${filename}"
nohup java -Dlogging.config=./logback.xml -jar ${project}-1.0.0-SNAPSHOT.jar > logs/${filename} 2>&1 &

关闭脚本

 

#!/bin/bash
project="demo"
# 设置要停止的 JAR 文件名称
JAR_FILE="${project}-1.0.0-SNAPSHOT.jar"
# 查找正在运行的 Java 进程
JAVA_PID=$(ps aux | grep ${JAR_FILE} | grep -v grep | awk '{print $2}')
# 检查是否找到了进程 ID
if [ -z "${JAVA_PID}" ]; then
  echo "未找到正在运行的 ${JAR_FILE} 进程。"
else
  echo "找到正在运行的 ${JAR_FILE} 进程,进程ID为 ${JAVA_PID}。"
  # 停止该进程
  kill ${JAVA_PID}
  echo "已停止进程 ${JAVA_PID}。"
fi

2)  依赖外置

pom打包插件

<plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <finalName>demo</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptors>
                        <descriptor>src/main/resources/assembly.xml</descriptor>
                    </descriptors>
                    <outputDirectory>${project.build.directory}/out/</outputDirectory>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- 打包成jar文件,并指定lib文件夹以及resources资源文件夹 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.at21.demo.DemoApplication</mainClass>
                            <!--依赖前缀 -->
                            <classpathPrefix>lib/</classpathPrefix>
                            <addClasspath>true</addClasspath>
                        </manifest>
                        <manifestEntries>
                            <Class-Path>resources/</Class-Path>
                        </manifestEntries>
                    </archive>
                    <!-- jar包里面不包含配置文件-->
                    <excludes>
                        <exclude>/application.yml</exclude>
                        <exclude>/bin</exclude>
                        <exclude>/bin/*</exclude>
                        <exclude>/**.*</exclude>
                        <exclude>**/*.java</exclude>
                    </excludes>
                </configuration>
            </plugin>

 assembly.xml

<assembly
        xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">

<id>distribution</id>

    <!--输出格式 zip 最终结果生成zip -->
    <formats>
<!--        <format>tar.gz</format>-->
        <format>dir</format>
    </formats>

    <includeBaseDirectory>false</includeBaseDirectory>

    <!--设置需要输出文件 -->
    <fileSets>
        <fileSet>
            <directory>src/main/resources/bin</directory>
            <outputDirectory>/</outputDirectory>
            <fileMode>0755</fileMode>
        </fileSet>
        <fileSet>
            <directory>src/main/resources/</directory>
            <outputDirectory>/resources</outputDirectory>
            <includes>
                <include>*.*</include>
            </includes>
            <excludes>
                <exclude>assembly.xml</exclude>
            </excludes>
            <fileMode>0644</fileMode>
        </fileSet>
    </fileSets>

    <dependencySets>
        <dependencySet>
            <!--依赖包的输出目录 -->
            <outputDirectory>/lib</outputDirectory>
            <scope>runtime</scope>
            <excludes>
                <exclude>${project.groupId}:${project.artifactId}</exclude>
            </excludes>
        </dependencySet>
        <dependencySet>
            <!--jar包的输出目录 -->
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>${project.groupId}:${project.artifactId}</include>
            </includes>
        </dependencySet>
    </dependencySets>
</assembly>

3)  打包成war

修改pom文件将jar 改成war ,打成war之后,放到Tomcat的webapp下面即可

4、接口文档

接口使用swagger

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

swagger 配置文件


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @Author: zk
 * @DateTime: 2024-06-28 18:11:00
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.test"))
                .paths(PathSelectors.any())
                .build();
    }
}

使用swagger的接口配置

@Slf4j
@RestController
@Api(tags = "接口log3")
public class TestLog3Controller {
    
    @GetMapping("/log3")
    @ApiOperation("接口log3")
    public Object test() {
        log.info("-----接口log3-----");
        return ResultUtils.success("/aa/test3");
    }
}

 

5、打包成镜像

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值