Spring入门

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 【1月更文挑战第13天】一、环境要求二、构建模块三、程序开发1、引入依赖2、创建java类3、创建配置文件4、创建测试类测试5、运行测试程序四、程序分析五、启用Log4j2日志框架1、Log4j2日志概述2、引入Log4j2依赖3、加入日志配置文件4、测试5、使用日志

前言

一、环境要求

二、构建模块

三、程序开发

1、引入依赖

2、创建java类

3、创建配置文件

4、创建测试类测试

5、运行测试程序

四、程序分析

五、启用Log4j2日志框架

1、Log4j2日志概述

2、引入Log4j2依赖

3、加入日志配置文件

4、测试

5、使用日志

1、Log4j2日志概述


前言

一、环境要求

二、构建模块

三、程序开发

1、引入依赖

2、创建java类

3、创建配置文件

4、创建测试类测试

5、运行测试程序

四、程序分析

五、启用Log4j2日志框架

1、Log4j2日志概述

2、引入Log4j2依赖

3、加入日志配置文件

4、测试

5、使用日志


一、环境要求

  • JDK:Java17+(Spring6要求JDK最低版本是Java17)
  • Maven:3.6+
  • Spring:6.0.2

二、构建模块

(1)构建父模块spring6

在idea中,依次单击 File -> New -> Project -> New Project

点击“Create”

删除src目录

(2)构建子模块spring6-first

点击 Create 完成

三、程序开发

1、引入依赖

https://spring.io/projects/spring-framework#learn

添加依赖:

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

查看依赖:

2、创建java类

packagecom.gedeshdai.spring6.bean;
publicclassHelloWorld {
publicvoidsayHello(){
System.out.println("helloworld");
    }
}

3、创建配置文件

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

<?xmlversion="1.0" encoding="UTF-8"?><beansxmlns="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"><!--配置HelloWorld所对应的bean,即将HelloWorld的对象交给Spring的IOC容器管理通过bean标签配置IOC容器所管理的bean属性:id:设置bean的唯一标识class:设置bean所对应类型的全类名--><beanid="helloWorld"class="com.gedeshidai.spring6.bean.HelloWorld"></bean></beans>

4、创建测试类测试

packagecom.gedeshidai.spring6.bean;
importorg.junit.jupiter.api.Test;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
publicclassHelloWorldTest {
@TestpublicvoidtestHelloWorld(){
ApplicationContextac=newClassPathXmlApplicationContext("beans.xml");
HelloWorldhelloworld= (HelloWorld) ac.getBean("helloWorld");
helloworld.sayHello();
    }
}

5、运行测试程序

四、程序分析

1. 底层是怎么创建对象的,是通过反射机制调用无参数构造方法吗?

修改HelloWorld类:

packagecom.gedeshidai.spring6.bean;
publicclassHelloWorld {
publicHelloWorld() {
System.out.println("无参数构造方法执行");
    }
publicvoidsayHello(){
System.out.println("helloworld");
    }
}

执行结果:

测试得知:创建对象时确实调用了无参数构造方法。

2. Spring是如何创建对象的呢?原理是什么?

// dom4j解析beans.xml文件,从中获取class属性值,类的全类名// 通过反射机制调用无参数构造方法创建对象Classclazz=Class.forName("com.atguigu.spring6.bean.HelloWorld");
//Object obj = clazz.newInstance();Objectobject=clazz.getDeclaredConstructor().newInstance();

3. 把创建好的对象存储到一个什么样的数据结构当中了呢?

bean对象最终存储在spring容器中,在spring源码底层就是一个map集合,存储bean的map在DefaultListableBeanFactory类中:

privatefinalMap<String, BeanDefinition>beanDefinitionMap=newConcurrentHashMap<>(256);

Spring容器加载到Bean类时 , 会把这个类的描述信息, 以包名加类名的方式存到beanDefinitionMap 中,

Map<String,BeanDefinition> , 其中 String是Key , 默认是类名首字母小写 , BeanDefinition , 存的是类的定义(描述信息) , 我们通常叫BeanDefinition接口为 : bean的定义对象。

五、启用Log4j2日志框架

1、Log4j2日志概述

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

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

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

(1)日志信息的优先级,日志信息的优先级从高到低有TRACE < DEBUG < INFO < WARN < ERROR < FATAL

TRACE:追踪,是最低的日志级别,相当于追踪程序的执行

DEBUG:调试,一般在开发中,都将其设置为最低的日志级别

INFO:信息,输出重要的信息,使用较多

WARN:警告,输出警告的信息

ERROR:错误,输出错误信息

FATAL:严重错误

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

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

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

2、引入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>

3、加入日志配置文件

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

<?xmlversion="1.0" encoding="UTF-8"?><configuration><loggers><!--level指定日志级别,从低到高的优先级:TRACE < DEBUG < INFO < WARN < ERROR < FATALtrace:追踪,是最低的日志级别,相当于追踪程序的执行debug:调试,一般在开发中,都将其设置为最低的日志级别info:信息,输出重要的信息,使用较多warn:警告,输出警告的信息error:错误,输出错误信息fatal:严重错误--><rootlevel="DEBUG"><appender-refref="spring6log"/><appender-refref="RollingFile"/><appender-refref="log"/></root></loggers><appenders><!--输出日志信息到控制台--><consolename="spring6log"target="SYSTEM_OUT"><!--控制日志输出的格式--><PatternLayoutpattern="%d{yyyy-MM-dd HH:mm:ss SSS} [%t] %-3level %logger{1024} - %msg%n"/></console><!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用--><Filename="log"fileName="d:/spring6_log/test.log"append="false"><PatternLayoutpattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/></File><!-- 这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--><RollingFilename="RollingFile"fileName="d:/spring6_log/app.log"filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"><PatternLayoutpattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/><SizeBasedTriggeringPolicysize="50MB"/><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 --><DefaultRolloverStrategymax="20"/></RollingFile></appenders></configuration>

4、测试

运行原测试程序

5、使用日志

publicclassHelloWorldTest {
privateLoggerlogger=LoggerFactory.getLogger(HelloWorldTest.class);
@TestpublicvoidtestHelloWorld(){
ApplicationContextac=newClassPathXmlApplicationContext("beans.xml");
HelloWorldhelloworld= (HelloWorld) ac.getBean("helloWorld");
helloworld.sayHello();
logger.info("执行成功");
    }
}

控制台:


总结

以上就是Spring入门的相关知识点,希望对你有所帮助。

积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
存储 安全 Java
SpringBoot搭建Spring Security 入门
SpringBoot搭建Spring Security 入门
118 0
|
4月前
|
Java 程序员 Maven
Spring AOP入门指南:轻松掌握面向切面编程的基础知识
Spring AOP入门指南:轻松掌握面向切面编程的基础知识
|
4月前
|
存储 监控 Java
Spring6入门 + Log4j2
Spring6入门 + Log4j2
|
4月前
|
Java Android开发 Spring
spring-boot入门例子
spring-boot入门例子
|
5月前
|
监控 安全 Java
Spring Boot2.6入门
Spring Boot2.6入门
60 0
|
1月前
|
前端开发 Java 数据库连接
Spring系列文章1:Spring入门程序
Spring系列文章1:Spring入门程序
|
3天前
|
安全 Java 数据库连接
在IntelliJ IDEA中通过Spring Boot集成达梦数据库:从入门到精通
在IntelliJ IDEA中通过Spring Boot集成达梦数据库:从入门到精通
|
18天前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
|
18天前
|
Dubbo Java 应用服务中间件
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
|
29天前
|
XML Java 数据格式
从入门到精通:Spring基础注解的全面解析
从入门到精通:Spring基础注解的全面解析
47 2
从入门到精通:Spring基础注解的全面解析