学到一些小知识关于Maven 与 logback 与 jpa 日志

1.jpa想要输出参数

XML 复制代码
logging:
  level:
    org.hibernate.orm.jdbc.bind: trace #打印SQL参数
    web: debug #web框架的日志级别

就可以了,

2.Slf4j

其实 Slf4j 是一个日志接口规范,没有具体的实现

而 logback 是 Slf4j的一个实现 ,也是springboot3 的默认实现,

一个项目最好只有一个 Slf4j的实现,要不然可能会有冲突, 他会扫描类路径下是否有实现,然后找到后使用。

springboot3还可以切换 log4j2 的实现, 本来 log4j2 的接口与 Slf4j不同 ,但是springboot -log4j2-starter 使用了适配器模式,适配了SLF所以 可以无缝衔接 slf ,但是要排除原来自带的 springboot-logging-starter 的依赖, 来保证只有一个SLF实现

log4j2的配置文件

log4j2.xml

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN"> <!--log4j2内部的日志输出级别,跟你的项目无关-->
    <Appenders>
        <!-- 控制台输出 -->
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>

        <!-- 滚动文件输出 -->
        <RollingFile name="RollingFile" fileName="logs/application.log"
                     filePattern="logs/application-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout>
                <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %msg%n</pattern>
            </PatternLayout>
            <Policies>
                <!-- 时间滚动策略:每天滚动一次 -->
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <!-- 文件大小滚动策略:当文件达到 10MB 时滚动 -->
                <SizeBasedTriggeringPolicy size="10MB"/>
            </Policies>
            <!-- 保留的日志文件数量 -->
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
    </Appenders>

    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFile"/>
        </Root>
        <Logger name="com.yourpackage" level="debug" additivity="false">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFile"/>
        </Logger>
    </Loggers>
</Configuration>
XML 复制代码
logging:
  level:
    root: info
    com.yourpackage: debug
  config: classpath:log4j2.xml

所有的子日志 都是继承 root 日志的

3.不同依赖范围的行为

范围 编译时可用 测试时可用 运行时可用 打包到构建产物 传递性
compile
provided
runtime
test
system
import

具体解释

  1. compile

    • 编译时可用:在编译项目时可用。
    • 测试时可用:在运行测试时可用。
    • 运行时可用:在项目运行时可用。
    • 打包到构建产物:会被包含在最终的构建产物(如 JAR 或 WAR 文件)中。
    • 传递性:会被传递给依赖当前项目的其他模块。
  2. provided

    • 编译时可用:在编译项目时可用。
    • 测试时可用:在运行测试时可用。
    • 运行时可用:在项目运行时不可用,因为这些依赖由运行环境提供。
    • 打包到构建产物:不会被包含在最终的构建产物中。
    • 传递性:不会被传递给依赖当前项目的其他模块。
  3. runtime

    • 编译时可用:在编译项目时不可用。
    • 测试时可用:在运行测试时可用。
    • 运行时可用:在项目运行时可用。
    • 打包到构建产物:会被包含在最终的构建产物中。
    • 传递性:会被传递给依赖当前项目的其他模块。
  4. test

    • 编译时可用:在编译项目时不可用。
    • 测试时可用:在运行测试时可用。
    • 运行时可用:在项目运行时不可用。
    • 打包到构建产物:不会被包含在最终的构建产物中。
    • 传递性:不会被传递给依赖当前项目的其他模块。
  5. system

    • 编译时可用:在编译项目时可用。
    • 测试时可用:在运行测试时可用。
    • 运行时可用:在项目运行时可用。
    • 打包到构建产物:不会被包含在最终的构建产物中。
    • 传递性:不会被传递给依赖当前项目的其他模块。
    • 特殊性 :需要通过 <systemPath> 指定依赖的路径,通常是项目目录中的 JAR 文件。
  6. import

    • 编译时可用:在编译项目时不可用。
    • 测试时可用:在运行测试时不可用。
    • 运行时可用:在项目运行时不可用。
    • 打包到构建产物:不会被包含在最终的构建产物中。
    • 传递性:会被传递给依赖当前项目的其他模块。
    • 特殊性 :主要用于 pom 类型的依赖,用于导入其他 pom 文件中的依赖管理信息,常用于 BOM(Bill of Materials)文件。

option 与 provided 的区别 就是 语义化

option: 在当前项目使用,其他依赖引入的时候,必须显示声明才能使用,它依赖了这个依赖的内容

provided:是根本就不传递, 有另一个容器去提供此依赖的内容

4. SQL json

将数据库 的json 字段 转化成 想要的格式 ,因为实体类改了

sql 复制代码
UPDATE enum_dictionary 
SET enum_params = (
    SELECT JSON_OBJECTAGG(
        k,
        JSON_OBJECT('defaultValue', JSON_EXTRACT(enum_params, CONCAT('$."', k, '"')))
    )
    FROM JSON_TABLE(
        JSON_KEYS(enum_params),
        '$[*]' COLUMNS (k VARCHAR(255) PATH '$')
    ) AS jt
);
相关推荐
青云交18 分钟前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图
CHEN5_021 小时前
【Java基础面试题】Java基础概念
java·开发语言
二十雨辰1 小时前
[TG开发]照片机器人
java·web3
武昌库里写JAVA2 小时前
JAVA面试汇总(四)JVM(一)
java·vue.js·spring boot·sql·学习
xiep14383335102 小时前
Ubuntu 安装带证书的 etcd 集群
数据库·etcd
落霞的思绪3 小时前
Java设计模式详细解读
java·开发语言·设计模式
Java小白程序员3 小时前
Spring Framework:Java 开发的基石与 Spring 生态的起点
java·数据库·spring
老虎06273 小时前
数据库基础—SQL语句总结及在开发时
数据库·sql·oracle
拂晓银砾3 小时前
Java数据结构-栈
java·数据结构
甄超锋3 小时前
Java Maven更换国内源
java·开发语言·spring boot·spring·spring cloud·tomcat·maven