Maven相关依赖设置

时间:2024-11-06 09:44:20

相关依赖

1.集合工具类依赖

(1)commons-collections4是 Apache Commons 项目中的一个组件,它提供了一系列增强的集合类和工具类,具有以下主要作用:

一、丰富的集合类

  1. 多态集合:提供了各种不同类型的集合实现,如
    • 例如,使用MultiMap可以轻松地实现一个键对应多个值的存储需求,在处理一对多关系的数据时非常有用。
  2. 增强的迭代器:提供了功能更强大的迭代器,如
    • 比如,可以使用FilterIterator在遍历集合时只选择满足特定条件的元素,简化了数据筛选的过程。

二、集合工具类

  1. 集合操作:提供了一系列用于集合操作的工具方法,如集合的交集、并集、差集等运算,以及集合的转换、排序、分组等功能。
    • 例如,可以方便地计算两个集合的交集,快速找出共同的元素。
  2. 空值处理:提供了一些方法来处理集合中的空值,避免空指针异常。
    • 在处理可能包含空值的集合时,可以使用这些方法来确保程序的稳定性。
    <dependency>
          <groupId>org.apache.commons</groupId>

          <artifactId>commons-collections4</artifactId>

          <version>4.4</version>

    </dependency>

(2)commons-lang3是 Apache Commons 项目中的一个组件,它提供了一系列实用的工具类和方法,用于处理 Java 语言中的常见任务。例如:

  • StringUtils类提供了很多方便的方法来操作字符串,如判断字符串是否为空、是否包含特定子串、去除字符串两端的空白等。
  • ArrayUtils可以方便地操作数组,如判断数组是否为空、合并数组等。
  • RandomStringUtils.randomNumeric(8)可以方生成8个随机数字字符串
       <dependency>
            <groupId>org.apache.commons</groupId>

            <artifactId>commons-lang3</artifactId>

            <version>3.15.0</version>

        </dependency>

2.测试需求依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-test</artifactId>

            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>

                    <artifactId>slf4j-api</artifactId>

                </exclusion>

            </exclusions>

        </dependency>

        <dependency>
            <groupId>junit</groupId>

            <artifactId>junit</artifactId>

            <version>4.13.2</version>

        </dependency>

3.json解析依赖

  • 依赖1:
        <dependency>
            <groupId>com.alibaba</groupId>

            <artifactId>fastjson</artifactId>

            <version>1.2.50</version>

        </dependency>

使用示例

import com.alibaba.fastjson.JSON;

public class Main {
    public static void main(String[] args) {
        User user = new User("张三", 25);
        String jsonString = JSON.toJSONString(user);
        System.out.println(jsonString);
    }
}
  • 依赖2:
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>

            <artifactId>jackson-databind</artifactId>

            <version>2.13.3</version>

        </dependency>

  • @JsonProperty:记得搭配实现Serializable
@Data
public class ChatChoice implements Serializable {
    private long index;
    /** stream = true 请求参数里返回的属性是 delta */
    @JsonProperty("delta")
    private Message delta;
    /** stream = false 请求参数里返回的属性是 message */
    @JsonProperty("message")
    private Message message;
    @JsonProperty("finish_reason")
    private String finishReason;

    private String logprobs;
}
  1. 在对象序列化时,这个注解告诉 Jackson 库在生成 JSON 格式数据时,将被注解的属性名映射为 "message"。例如,如果有一个 Java 对象,其中一个属性使用了这个注解,当这个对象被序列化为 JSON 时,该属性在 JSON 中的键将是 "message"而不是原来的属性名。
  2. 在反序列化时,Jackson 会根据这个注解将 JSON 中的 "message"键对应的值映射到被注解的 Java 对象属性上。
  • @JsonInclude(JsonInclude.Include.NON_NULL)

这个注解用于控制对象在序列化为 JSON 格式时,只包含非空属性。如果一个对象的某个属性值为 null,那么在生成的 JSON 中,这个属性将不会被包含。

@Data
@Builder
@Slf4j
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
/*
对话聊天,请求信息依照;OpenAI官网API构建参数;https://platform.openai.com/playground
 */
//实现了 Serializable 序列化接口,为了在网络请求的过程中将该类的对象转换为字节流进行传输。
public class ChatCompletionRequest implements Serializable {

    /** 默认模型3.5*/
    private String model = Model.GPT_3_5_TURBO.getCode();
    /** 问题描述*/
    private List<Message> messages;
    /** 控制温度【随机性】;0到2之间。较高的值(如0.8)将使输出更加随机,而较低的值(如0.2)将使输出更加集中和确定 */
    private double temperature = 0.2;
    /** 多样性控制;使用温度采样的替代方法称为核心采样,其中模型考虑具有top_p概率质量的令牌的结果。因此,0.1 意味着只考虑包含前 10% 概率质量的代币 */
    @JsonProperty("top_p")//这个注解可能与Jackson库或其他类似的JSON处理库一起使用。这样一来,在将Java对象转换为JSON字符串(序列化)或将JSON字符串转换为Java对象(反序列化)时,会使用指定的字段名称 “top_p”。
    private Double topP = 1d;
    /** 为每个提示生成的完成次数 */
    private Integer n = 1;
    /** 是否为流式输出;就是一蹦一蹦的,出来结果 */
    private boolean stream = false;
    /** 停止输出标识 */
    private List<String> stop;
    /** 输出字符串限制;0 ~ 4096 */
    @JsonProperty("max_tokens")
    private Integer maxTokens = 2048;
    /** 频率惩罚;降低模型重复同一行的可能性 */
    @JsonProperty("frequency_penalty")
    private double frequencyPenalty = 0;
    /** 存在惩罚;增强模型谈论新话题的可能性 */
    @JsonProperty("presence_penalty")
    private double presencePenalty = 0;
    /** 生成多个调用结果,只显示最佳的。这样会更多的消耗你的 api token */
    @JsonProperty("logit_bias")
    private Map logitBias;
    /** 调用标识,避免重复调用 */
    private String user;

    @Getter
    @AllArgsConstructor
    public enum Model{
        /** gpt-3.5-turbo */
        GPT_3_5_TURBO("gpt-3.5-turbo"),
        /** GPT4.0 */
        GPT_4("gpt-4"),
        /** GPT4.0 超长上下文 */
        GPT_4_32K("gpt-4-32k"),
        ;
        private String code;
    }
}

4.mybatis分页

       <!-- MySql数据库-->
        <dependency>
            <groupId>mysql</groupId>

            <artifactId>mysql-connector-java</artifactId>

            <version>8.0.33</version>

        </dependency>

        <!-- Mybatis和分页组件 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>

            <artifactId>mybatis-spring-boot-starter</artifactId>

        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>

            <artifactId>mybatis</artifactId>

            <version>3.5.2</version>

        </dependency>

5.springBoot配置依赖

    <parent>
        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-parent</artifactId>

        <version>3.3.1</version>

    </parent>

    <parent>
        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-parent</artifactId>

        <version>2.4.0</version>

    </parent>

        <!-- 基础框架组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-web</artifactId>

        </dependency>

6.日志相关依赖

详情见《日志框架选型》

SpringBoot项目

        <dependency>
            <groupId>org.projectlombok</groupId>

            <artifactId>lombok</artifactId>

            <version>1.18.22</version>

            <scope>provided</scope>

        </dependency>

        <!-- 基础框架组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-web</artifactId>

        </dependency>

基本项目

        <dependency>
            <groupId>org.slf4j</groupId>

            <artifactId>slf4j-api</artifactId>

            <version>1.7.22</version>

        </dependency>

        <dependency>
            <groupId>ch.qos.logback</groupId>

            <artifactId>logback-classic</artifactId>

            <version>1.2.3</version>

        </dependency>

配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!-- if debug set to true, context info always print
 otherwise the contex info will print when error occour -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{40} [%file : %line] - %msg%n</pattern>

        </layout>

    </appender>

    <!-- 日志文件-->
    <appender name="terminal" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>logs/terminal-service.log</File>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/terminal-service.log.%d{yyyyMMddHH}</fileNamePattern>

            <maxHistory>240</maxHistory>

        </rollingPolicy>

        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{40} [%file : %line] - %msg%n</pattern>

        </encoder>

    </appender>


    <appender name="terminal-api" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>logs/terminal-api.log</File>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/terminal-api.%d{yyyyMMddHH}.log</fileNamePattern>

            <maxHistory>240</maxHistory>

        </rollingPolicy>

        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{40} [%file : %line] - %msg%n</pattern>

        </encoder>

    </appender>

    <appender name="terminal-rmq" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>logs/terminal-rmq.log</File>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/terminal-rmq.log.%d{yyyyMMddHH}</fileNamePattern>

            <maxHistory>240</maxHistory>

        </rollingPolicy>

        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{40} [%file : %line] - %msg%n</pattern>

        </encoder>

    </appender>


    <!--region 埋点-->
    <appender name="bigdata" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>logs/bigdata.log</File>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/bigdata.log.%d{yyyyMMddHH}</fileNamePattern>

            <maxHistory>240</maxHistory>

        </rollingPolicy>

        <encoder>
            <pattern>%msg%n</pattern>

        </encoder>

    </appender>

    <logger name="bigdataLogger" additivity="false" level="INFO">
        <appender-ref ref="bigdata" />
    </logger>

    <logger name="rmq-logger" additivity="false" level="INFO">
        <appender-ref ref="terminal-rmq" />
    </logger>

    <logger name="api_logger" additivity="false" level="INFO">
        <appender-ref ref="terminal-api" />
    </logger>


    <logger name="java.sql" level="INFO" additivity="false">
        <appender-ref ref="terminal" />
    </logger>

    <logger name="com.atomikos" additivity="false" level="ERROR">
        <appender-ref ref="terminal" />
    </logger>

    <root level="INFO">
        <appender-ref ref="terminal"/>
        <appender-ref ref="CONSOLE"/>
    </root>

    <root level="ERROR">
        <appender-ref ref="terminal"/>
        <appender-ref ref="CONSOLE"/>
    </root>

    <root level="WARNING">
        <appender-ref ref="terminal"/>
        <appender-ref ref="CONSOLE"/>
    </root>

</configuration>

使用

@Slf4j
public class Test1 {
    final static Logger logger