likes
comments
collection
share

😎😎2023新技术——Spring6保姆级教程!!

作者站长头像
站长
· 阅读数 20

首先我们创建一个父工程,名为Spring6

😎😎2023新技术——Spring6保姆级教程!!

这里的JDK版本要选择17,maven版本要达到3.6及以上,创建项目之后进入IDEA主界面,删除父工程Spring6的src包。紧接着创建module工程,名为spring-first

😎😎2023新技术——Spring6保姆级教程!! 然后我们要配置maven,我们需要引入spring相关的maven坐标,如下

<dependencies>
        <!-- <https://mvnrepository.com/artifact/org.springframework/spring-context> -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.0.2</version>
        </dependency>
        <!-- <https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api> -->
            <!--junit-->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.3.1</version>
        </dependency>
    </dependencies>

完成配置后点击右侧maven刷新按钮,等待下方进度条加载完毕且pom.xml不再报错,即为配置成功。

😎😎2023新技术——Spring6保姆级教程!!

在main主体类下java包中创建一个package名为com.atguigu.spring6,在该package下新建一个User类,内容如下

package com.atguigu.spring6;

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

    public static void main(String[] args) {
        User user = new User();
        user.add();
    }
}

然后我们在resources下面新建一个xml文件,具体操作见下图

😎😎2023新技术——Spring6保姆级教程!!

我们将这个xml命名为bean,配置内容见下方代码块

<?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.atguigu.spring6.User"></bean>
</beans>

xml文件中,我们添加一个bean标签用于完成user对象的创建。

  • id属性值唯一,这一点我们已经在Javaweb中熟知,id我们一般取名为所要完成类的对象的名字的小写
  • class属性我们要求配置为创建对象所在类的全路径(包名+类名),一般来说都会有智能提示。

配置完xml后,我们在com.atguigu.spring6下新建一个TestUser类,用于测试User类,内容如下

package com.atguigu.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();
    }
}

TestUser类中我们新建一个testUserObject方法对User类进行测试,并且加上注解@Test,在spring事务中有一个对象叫ApplicationContext,这个对象是用来加载spring配置文件的,并且在ClassPathXmlApplicationContext中配置好xml的文件名,接下来我们使用强转去获取到userbean.xml,使用User进行强转, 获取user类,并且打印输出这个user类,最后调用add方法进行测试。

我们在User类中添加无参构造器,验证在测试User类的时候是否调用无参构造器

public User(){
        System.out.println("无参数构造执行");
    }

😎😎2023新技术——Spring6保姆级教程!!

接着我们在TestUser类中创建testUserObject1方法,获取类Class的对象

Class clazz = Class.forName("com.atguigu.spring6.User");

forName本身会有一个异常,抛出即可。然后我们调用User对象去打印输出该对象的值

User user = (User)clazz.getDeclaredConstructor().newInstance();
        System.out.println(user);

😎😎2023新技术——Spring6保姆级教程!!

接下来我们对log4j日志进行整合,首先我们引入maven坐标

<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>

然后我们在resources路径下新建一个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>

然后我们回到TestUser类中,执行testUserObject方法,观察控制台输出结果,见下图

😎😎2023新技术——Spring6保姆级教程!!

接下来我们要实现的功能就是手动写日志。我们先在TestUser中创建Logger对象

private Logger logger = LoggerFactory.getLogger(TestUser.class);

📌这里的package千万不要导错了,在TestUser中正确的包名见下图

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

testUserObject方法里面我们手动写入日志信息

logger.info("###执行调用成功###");

观察控制台输出结果

😎😎2023新技术——Spring6保姆级教程!!

至此,log4j2日志导入正式完成。