Spring6——入门

news2024/12/24 3:34:00

文章目录

    • 入门
      • 环境要求
      • 构建模块
      • 程序开发
        • 引入依赖
        • 创建java类
        • 创建配置文件
        • 创建测试类
        • 运行测试程序
      • 程序分析
      • 启用Log4j2日志框架
        • Log4j2日志概述
        • 引入Log4j2依赖
        • 加入日志配置文件
        • 测试
        • 使用日志

入门

环境要求

  • JDK:Java17+(Spring6要求JDK最低版本是Java17

  • Maven:3.6+

  • Spring:6.0.2

构建模块

  • 构建父模块spring6:在idea中,依次单击 File -> New -> Project -> New Project

在这里插入图片描述

  • 删除src目录

    在这里插入图片描述

  • 构建子模块spring-first

    在这里插入图片描述

程序开发

引入依赖

子模块pom.xml文件中添加依赖

<dependencies>
    <!--spring context依赖-->
    <!--当你引入Spring Context依赖之后,表示将Spring的基础依赖引入了-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>6.0.2</version>
    </dependency>

    <!--junit5测试-->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.3.1</version>
    </dependency>
</dependencies>

查看依赖

在这里插入图片描述

创建java类

package com.gues.spring6;

public class User {

    public void add(){
        System.out.println("add ...");
    }
}

创建配置文件

在resources目录创建一个 Spring 配置文件 beans.xml(配置文件名称可随意命名,如:springs.xm)

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--完成user对象创建
        bean标签
            id属性:唯一标识
            class属性:要创建对象所在类的全路径(包名称 + 类名称)
    -->
    <bean id="user" class="com.gues.spring6.User"></bean>
</beans>

创建测试类

package com.gues.spring6;

import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestUser {
    @Test
    public void testUserObject(){
        //加载spring配置文件,对象创建
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean.xml");
        //获取创建的对象
        User user = (User) context.getBean("user");
        System.out.println(user);
        //使用对象调用方法进行测试
        user.add();
    }
}

运行测试程序

在这里插入图片描述

程序分析

在这里插入图片描述

启用Log4j2日志框架

Log4j2日志概述

在项目开发中,日志十分的重要,不管是记录运行情况还是定位线上问题,都离不开对日志的分析。日志记录了系统行为的时间、地点、状态等相关信息,能够帮助我们了解并监控系统状态,在发生错误或者接近某种危险状态时能够及时提醒我们处理,同时在系统产生问题时,能够帮助我们快速的定位、诊断并解决问题。

**Apache Log4j2**是一个开源的日志记录组件,使用非常的广泛。在工程中以易用方便代替了 System.out 等打印语句,它是JAVA下最流行的日志输入工具。

Log4j2主要由几个重要的组件构成:

  • 日志信息的优先级TRACE < DEBUG < INFO < WARN < ERROR < FATAL
    • TRACE:追踪,是最低的日志级别,相当于追踪程序的执行
    • DEBUG:调试,一般在开发中,都将其设置为最低的日志级别
    • INFO:信息,输出重要的信息,使用较多
    • WARN:警告,输出警告的信息
    • ERROR:错误,输出错误信息
    • FATAL:严重错误

这些级别分别用来指定这条日志信息的重要程度;级别高的会自动屏蔽级别低的日志,也就是说,设置了WARN的日志,则INFO、DEBUG的日志级别的日志不会显示

  • 日志信息的输出目的地,日志信息的输出目的地指定了日志将打印到控制台还是文件中

  • 日志信息的输出格式,而输出格式则控制了日志信息的显示内容。

引入Log4j2依赖

<!--log4j2的依赖-->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.19.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j2-impl</artifactId>
    <version>2.19.0</version>
</dependency>

加入日志配置文件

在类的根路径下提供log4j2.xml配置文件(文件名固定为:log4j2.xml,文件必须放到类根路径下

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <loggers>
        <!--
            level指定日志级别,从低到高的优先级:
                TRACE < DEBUG < INFO < WARN < ERROR < FATAL
                trace:追踪,是最低的日志级别,相当于追踪程序的执行
                debug:调试,一般在开发中,都将其设置为最低的日志级别
                info:信息,输出重要的信息,使用较多
                warn:警告,输出警告的信息
                error:错误,输出错误信息
                fatal:严重错误
        -->
        <root level="DEBUG">
            <appender-ref ref="spring6log"/>
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="log"/>
        </root>
    </loggers>

    <appenders>
        <!--输出日志信息到控制台-->
        <console name="spring6log" target="SYSTEM_OUT">
            <!--控制日志输出的格式-->
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss SSS} [%t] %-3level %logger{1024} - %msg%n"/>
        </console>

        <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用-->
        <File name="log" fileName="d:/spring6_log/test.log" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>

        <!-- 这个会打印出所有的信息,
            每次大小超过size,
            则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,
            作为存档-->
        <RollingFile name="RollingFile" fileName="d:/spring6_log/app.log"
                     filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <SizeBasedTriggeringPolicy size="50MB"/>
            <!-- DefaultRolloverStrategy属性如不设置,
            则默认为最多同一文件夹下7个文件,这里设置了20 -->
            <DefaultRolloverStrategy max="20"/>
        </RollingFile>
    </appenders>
</configuration>

测试

运行原测试程序,多了spring打印日志

在这里插入图片描述

使用日志

public class TestUser {

    //创建Logger对象
    private Logger logger = LoggerFactory.getLogger(TestUser.class);
    @Test
    public void testUserObject(){
        //加载spring配置文件,对象创建
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean.xml");
        //获取创建的对象
        User user = (User) context.getBean("user");
        System.out.println(user);
        //使用对象调用方法进行测试
        user.add();
        //手动写入日志
        logger.info("###执行调用成功了..");
    }
}

控制台:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/789586.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简述centos7如何安装和配置nginx

Nginx&#xff08;发音为"engine x"&#xff09;是一个开源的高性能的 Web 服务器和反向代理服务器。它具有以下特点&#xff1a; 高性能&#xff1a;Nginx 采用事件驱动的异步架构&#xff0c;能够处理大量并发连接而不会占用过多的系统资源。它能够轻松应对高并发访…

1156. 单字符重复子串的最大长度;1497. 检查数组对是否可以被 k 整除;1510. 石子游戏 IV

1156. 单字符重复子串的最大长度 核心思想&#xff1a;利用滑动窗口text[i:j)&#xff0c;不断滑动&#xff0c;滑动窗口中装的是重复的单字符。枚举好窗口&#xff0c;然后看窗口装的字符等于多少个&#xff0c;如果个数小于总个数&#xff0c;说明我们至少可以使它增加1&…

7.25 作业

1.做一个登录界面 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {this->setFixedSize(800,600);this->setWindowOpacity(0.9);this->setWindowTitle("登录");this->setWindowIcon(QIcon("E:\\hqyj\\Qt\\icon_h…

SystemVerilog 第2章:数据类型

在 Verilog中,初学者经常分不清reg和wire两者的区别。应该使用它们中哪一个来驱动端口?连接不同模块时又该如何做? Systemverilog对经典的reg数据类型进行了改进,使得它除了作为一个变量以外,还可以被连续赋值、门单元和模块所驱动。为了与寄存器类型相区别,这种改进的数据类…

Java连锁门诊医院HIS信息管理系统源码

Java连锁门诊医院HIS信息管理系统源码&#xff1a;SaaS运维平台多医院多机构多门诊入驻强大的电子病历完整开发文档 一、系统概述 ❉采用主流成熟技术&#xff0c;软件结构简洁、代码规范易阅读&#xff0c;SaaS应用&#xff0c;全浏览器访问前后端分离&#xff0c;多服务协同…

RocketMQ第一课-快速实战以及集群架构搭建

一、RocketMQ产品特点 1、RocketMQ介绍 ​ RocketMQ是阿里巴巴开源的一个消息中间件&#xff0c;在阿里内部历经了双十一等很多高并发场景的考验&#xff0c;能够处理亿万级别的消息。2016年开源后捐赠给Apache&#xff0c;现在是Apache的一个顶级项目。 ​ 早期阿里使用Act…

【如何训练一个中译英翻译器】LSTM机器翻译模型部署(三)

系列文章 【如何训练一个中译英翻译器】LSTM机器翻译seq2seq字符编码&#xff08;一&#xff09; 【如何训练一个中译英翻译器】LSTM机器翻译模型训练与保存&#xff08;二&#xff09; 【如何训练一个中译英翻译器】LSTM机器翻译模型部署&#xff08;三&#xff09; 目录 系列…

通过两种实现方式理解CANoe TC8 demo是如何判断接收的以太网报文里的字段的

假设有一个测试用例,需求是:编写一个测试用例,发送一条icmpv4 echo request报文给DUT,identifier字段设置为10。判断DUT能够回复icmpv4 echo reply报文,且identifier字段值为10。 实现:在canoe的simulation setup界面插入一个test节点,ip地址为:192.168.0.1,mac地址为…

Tensorflow学习

一、处理数据的结构 案例代码如下: import tensorflow.compat.v1 as tf tf.disable_v2_behavior() import numpy as np# create data x_data np.random.rand(100).astype(np.float32) y_data x_data*0.1 0.3# 创建结构(一维结构) Weights tf.Variable(tf.random.uniform(…

数据结构-顺序表各项功能的实现

文章目录 前言一、"SeqList.h"部分二、"SeqList.c"部分1.初始化2.销毁3.扩容及打印4.尾插及尾删5.头插及头删6.顺序表查找7.顺序表在pos位插入x8.顺序表删除low位置的数 三、"text.c"部分结语 前言 线性表是n个具有相同属性的有限数列&#xff0…

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)五:后台主页功能实现上

一、本章内容 本章实现后台主页框架实现、菜单的动态加载及生产、tab组件与菜单绑定、菜单与路由绑定等,工具栏按钮等界面及对应功能实现。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览

(六)springboot实战——springboot的启动流程分析

前言 本节内容我们主要介绍一下springboot的启动流程&#xff0c;它内部是如何实现启动加载的&#xff0c;启动过程中都做了哪些工作&#xff0c;这是我们比较关注的问题。 正文 SpringBootApplication启动类注解的解读 - SpringBootConfiguration&#xff1a;等同于Configu…

WPF实战学习笔记09-创建工作单元

创建工作单元 添加包 Microsoft.EntityFrameworkCore.AutoHistory A plugin for Microsoft.EntityFrameworkCore to support automatically recording data changes history. Microsoft.EntityFrameworkCore.UnitOfWork A plugin for Microsoft.EntityFrameworkCore to suppor…

【Docker 实用技巧】动态切换国内外源

目录 前言&#xff1a; 1、背景 2、ChatGPT 的方案 3、我的方案 3.1 本地构建 3.2 Github Action 构建 3.3 实际方案 前言&#xff1a; Docker 是一个非常流行的开发和部署平台&#xff0c;它可以帮助开发者快速构建、部署和管理应用程序。在使用 Docker 的过程中&…

聊聊STM32 ADC的话题

STM32 微控制器系列提供了多个模拟数字转换器&#xff08;ADC&#xff09;模块&#xff0c;用于实现模拟信号的采集和转换为数字信号。ADC 在很多应用中都是非常重要的&#xff0c;例如传感器数据采集、电压测量等。 在 STM32 中&#xff0c;ADC 可以通过 STM32HAL 库提供的函…

Unity游戏源码分享-3d机器人推箱子游戏

Unity游戏源码分享-3d机器人推箱子游戏 一个非常意思的3D游戏 工程地址&#xff1a;https://download.csdn.net/download/Highning0007/88098014

leetcode5. 最长回文子串(Manacher - java)

Manacher回文算法 leetcode5. 最长回文子串Manacher 算法 manacher 算法 leetcode5. 最长回文子串 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。 示例 1&#xff1a; 输入&#xff1a;s “…

pear文件利用 (远程文件下载、生成配置文件、写配置文件) 从一道题看——CTFshow私教 web40

web40 考点&#xff1a;pear文件包含 pear是PHP的一个扩展 条件&#xff1a; 1 有文件包含点 2 开启了pear扩展 &#xff08;可以当他是一个框架&#xff09; 3 配置文件中register_argc_argv 设置为On,而默认为Off&#xff08;$_SERVER[‘argv’]生效&#xff09; 4 找到…

互联网创业项目整合:提高成功率的关键方法

互联网创业是当前非常火热的话题&#xff0c;但是市场竞争也异常激烈&#xff0c;成功率不高。今天&#xff0c;我来分享一些互联网创业项目整合的方法&#xff0c;帮助大家创造更大的机会。 1️⃣ 选择适合自己的领域 在选择创业项目时&#xff0c;一定要根据自己的专业、兴…

kafka权威指南学习

0、kafka常用命令 Kafka是一个分布式流处理平台&#xff0c;它具有高度可扩展性和容错性。以下是Kafka最新版本中常用的一些命令&#xff1a; 创建一个主题&#xff08;topic&#xff09;&#xff1a; bin/kafka-topics.sh --create --topic my-topic --partitions 3 --replic…