Spring6学习技术|简要介绍+安装环境+入门案例+log4j2日志

学习材料

尚硅谷Spring零基础入门到进阶,一套搞定spring6全套视频教程(源码级讲解)
碎碎念一下吧,javaWeb跟完了全程。还是感觉啥也不知道,啥也没学会。2025年春天能找到实习吗?真的好担心。

环境安装

纠结跟spring5还是spring6,思索一下,还是跟spring6吧。原因是spring5的教程里面我找不到视频里的spring安装路径。
spring6要求的环境如下:

(1)IDEA开发工具:2022.1.2
(2)JDK:Java17 (Spring6要求JDK最低版本是Java17)
(3)Spring:6.0.2

关于JDK。原来跟韩顺平老师的课程的时候安装过jdk8,所以这里选择安装多版本的教程。
环境变量配置(同时安装多个JDK)
关于maven,我从来没有接触过,这到底是一个什么东西,比较小白地跟着教程安装了。这里修改setting.xml时,修改到阿里云的镜像,测试在idea里面会报错,所以就用默认的。(3.9版本)
intellij IDEA安装Maven详细过程
在安装完这些之后,jdk比较好选择,只要在创建项目的时候用到就好,麻烦的是Maven,因为idea有默认的,所以要修改:
在这里插入图片描述
重大阻碍: 在安装老师所说自动下载的时候报错了。一直以为是setting.xml出错,所以idea默认的Maven和自己下载Maven一直反复选择。最后在一篇帖子里面得到了答案,是idea版本和Maven版本不一致。参考。所以安装了最新版idea(这里有条件可以申请教育免费的)。

记录一下什么是Maven?目前能感受到的就是不用手动引入jar包了,嘿嘿。
Maven是什么? Maven的概念+作用+仓库的介绍+常用命令

Spring

怎么说,文字部分就很抽象,没怎么听懂。
轻量级的开源的框架。核心模块:IoC和AOP。

IoC:Inverse of Control 的简写,译为“控制反转”,指把创建对象过程交给 Spring 进行管理。(入门案例里展示了这个功能)
AOP:Aspect Oriented Programming 的简写,译为“面向切面编程”。AOP 用来封装多个类的公共行为,将那些与业务无关,却为业务模块所共同调用的逻辑封装起来,减少系统的重复代码,降低模块间的耦合度。另外,AOP 还解决一些系统层面上的问题,比如日志、事务、权限等。

一个入门案例

首先整个项目spring6创建了一个spring6-first的模块。
然后编写了spring6-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>

然后创建了一个User类。
在resource里面创建了bean.xml用于配置。
在test里面进行了测试。
在这里插入图片描述
User类

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

bean.xml

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

测试

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

分析案例

老师讲解了三个问题:

  1. 底层是怎么创建对象的,是通过反射机制调用无参数构造方法吗?
  2. Spring是如何创建对象的呢?原理是什么?
  3. 把创建好的对象存储到一个什么样的数据结构当中了呢?
    第一个问题就是显式地写一个无参构造器,然后输出一些信息就行。
    在这里插入图片描述

第二个问题就是反射的知识。

    @Testpublic void testUserReflect() throws Exception {//获取类的Class对象Class clazz = Class.forName("com.zy.spring6.User");//调用方法创建对象User user = (User) clazz.getDeclaredConstructor().newInstance();System.out.println(user);}
}

第三个问题就是到源代码里去看(老师直接给了答案,就是Map<唯一标识id,value类的有关信息>)

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

Log4j2日志框架

在项目开发中,日志十分的重要,不管是记录运行情况还是定位线上问题,都离不开对日志的分析。日志记录了系统行为的时间、地点、状态等相关信息,能够帮助我们了解并监控系统状态,在发生错误或者接近某种危险状态时能够及时提醒我们处理,同时在系统产生问题时,能够帮助我们快速的定位、诊断并解决问题。
Apache Log4j2是一个开源的日志记录组件,使用非常的广泛。在工程中以易用方便代替了 System.out 等打印语句,它是JAVA下最流行的日志输入工具。

  1. 还是要再pom.xml里面引入依赖。
<!--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>
  1. 然后再resource里面创建log4j2.xml文件。具体内容,老师给了。

  2. 运行原来的test函数。
    遇到了报错,解决方法警告: TestEngine with ID ‘junit-vintage’ failed to discover tests 。java.lang.NoSuchMethodError: org.ju…
    【SpringBoot测试Test报错】TestEngine with ID ‘junit-jupiter‘ failed to discover test

  3. 如何手动写日志?

public class HelloWorldTest {private Logger logger = LoggerFactory.getLogger(HelloWorldTest.class);@Testpublic void testHelloWorld(){ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");HelloWorld helloworld = (HelloWorld) ac.getBean("helloWorld");helloworld.sayHello();logger.info("执行成功");}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python打发无聊时光:5.用PyQt实现简陋的用户交互界面

第一步:安装PyQt5库 在终端输入: pip install pyqt5 第二步:复制下列代码 import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton from PyQt5.QtCore import Qt from PyQt5.QtGui import QFontclass I…

【ArcGIS Pro二次开发】(82):玩个花活_控规指标块生成

一、要实现的效果 废话不多说&#xff0c;这次要实现的是类似控规指标块的标注&#xff1a; 这里只是示例&#xff0c;用了5个格子&#xff0c;做成9个格子也是可以的。 实现这个效果最关键的是要用到Pro中的复合标注。 关于复合标注的用法可以搜一下帮助里的【使用复合注释…

泰尔指数、城乡收入差距1990-2022年(原始数据+测算数据集)

参考龙海明&#xff08;2015&#xff09;、程名望&#xff08;2019&#xff09;的做法&#xff0c;本文采用泰尔指数测算城乡收入差距。也采用陈斌开、林毅夫&#xff08;2013&#xff09;的做法&#xff0c;用城镇居民人均可支配收入除以农村居民人均纯收入来衡量城乡收入差距…

MCAL知识点(二十七):TC275如何通过GPT12实现ABZ解码

目录 1、概述 2、代码实现 1、概述 GPT12 - General Purpose Timer Unit (GPT12):通用定时器单元,具备较为灵活的定时器结构,可以用来做定时器、事件计数、脉冲宽度测量、产生PWM、频率调制、ABZ编码器增量测量。文章记录一下如何通过GPT12实现编码器ABZ信号的测量。 注意…

unity学习(15)——服务器组装(1)

1.新建好的c#项目如下&#xff1a; 文件夹中内容如下&#xff1a; 此时已经可以通过vs2022打开.sln文件&#xff0c;就可以打开项目了。 2.我们把逆向后&#xff08;主程序&#xff09;的内容的代码粘贴过去。有些逆向功底&#xff0c;很快可以定位到&#xff0c;服务器的入口…

二维码钓鱼激增587%:用户陷入社交诈骗陷阱!

Check Point软件技术公司发布的新研究揭示了典型的QR码攻击&#xff0c;通过Check Point的实时网络威胁地图&#xff0c;在两周内发现了2万起QR码钓鱼和恶意软件攻击事件&#xff0c;突显了QR码在网络犯罪分子面前的脆弱性。 QR码是"Quick Response Code"&#xff08…

sensitive-word v0.13 特性版本发布 支持英文单词全词匹配

拓展阅读 sensitive-word-admin v1.3.0 发布 如何支持分布式部署&#xff1f; sensitive-word-admin 敏感词控台 v1.2.0 版本开源 sensitive-word 基于 DFA 算法实现的高性能敏感词工具介绍 更多技术交流 业务背景 对于英文单词 Disburse 之类的&#xff0c;其中的 sb 字母会被…

CDC 整合方案:MySQL > Flink CDC > Kafka > Hudi

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

【数据结构】每天五分钟,快速入门数据结构(一)——数组

目录 一.初始化语法 二.特点 三.数组中的元素默认值 四.时间复杂度 五.Java中的ArrayList类 可变长度数组 1 使用 2 注意事项 3 实现原理 4 ArrayList源码 5 ArrayList方法 一.初始化语法 // 数组动态初始化&#xff08;先定义数组&#xff0c;指定数组长度&#xf…

移动通信相关知识学习笔记

一、移动通信架构简图 移动无线的接入网是专指各种基站设备。核心网就是各种交换机。 二、无线信号基本原理 无线网络中&#xff0c;使用AP设备和天线来实现有线和无线信号互相转换。如上图所示&#xff0c;有线网络侧的数据从AP设备的有线接口进入AP后&#xff0c;经AP处理为…

电子邮件是什么意思?电子邮箱有什么作用?

电子邮件的定义是什么&#xff1f;怎么申请电子邮箱比较好&#xff1f; 伴随着科技的飞速发展&#xff0c;逐渐渗透到我们的工作、学习和生活中。那么&#xff0c;电子邮件到底是什么意思呢&#xff1f;它又是如何影响我们的日常生活的呢&#xff1f;接下来&#xff0c;就让蜂…

C# CAD交互界面-自定义面板集-comboBox选择图层

运行环境Visual Studio 2022 c# cad2016 一、代码说明 SelectLayer方法是一个自定义的AutoCAD命令方法&#xff0c;通过[CommandMethod("SelectLayer")]进行标记。方法首先获取当前活动文档&#xff0c;并检查是否有效。创建一个名为"SelectLayer"的Pale…