2023新版Spring6全新讲解-HelloSpring入门案例

news2025/1/12 18:03:52

Spring的入门案例

在这里插入图片描述

Spring6.0要求的JDK最低版本是17

image.png

我们在本课程中使用的版本是5.x版本。这个Spring5的JDK的最低要求是8

image.png

一、环境要求

JDK:8

Maven:3.6+

Spring:5.3.27

开发工具:IDEA 2021.1.1

二、项目创建

1. 构建项目

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

image.png

选择 maven,指定JDK版本,然后点击下一步

image.png

指定相关的项目信息

image.png

项目的基础结构如下:

image.png

2.Spring引入

  我们要使用Spring框架。那么需要添加相关的Spring依赖。

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

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

点击加载后稍等会。等待加载就可以查看相关的依赖信息了

image.png

3.案例编写

  我们先定义一个普通的Java类。

package com.boge.spring;

public class HelloWorld {

    public void sayHello(){
        System.out.println("Hello Spring ...");
    }
}

  然后我们通过创建配置类的方式来演示。我们直接在resources目录下创建一个Spring的配置文件。applicationContext.xml

image.png

对应的内容如下

<?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注入到Spring的IoC容器中 -->
    <bean id="helloWorld" class="com.boge.spring.HelloWorld"></bean>
</beans>

创建测试类测试

public class HelloWorldTest {
    public static void main(String[] args) {
        // 加载Spring容器
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 从Spring容器中获取管理的Bean对象
        HelloWorld helloWorld = (HelloWorld) ac.getBean("helloWorld");
        // 执行Bean对象对应的方法
        helloWorld.sayHello();
    }
}

执行效果:

image.png

小结:

image.png

三、日志框架

  为了便于分析程序的执行。日志框架在项目开发中还是非常重要的。所以我们引入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)日志信息的输出格式,而输出格式则控制了日志信息的显示内容。

我们在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>

创建一个log4j2.xml的配置文件。然后放到resources的根目录下

<?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="springlog"/>
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="log"/>
        </root>
    </loggers>

    <appenders>
        <!--输出日志信息到控制台-->
        <console name="springlog" 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:/spring_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:/spring_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>

运行测试代码。可以看到多了很多的日志信息

image.png

在我们自己的代码中使用日志框架来替代掉 System.out.println()

package com.boge.spring;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class HelloWorldTest {

    private static Logger logger = LoggerFactory.getLogger(HelloWorldTest.class);

    public static void main(String[] args) {
        // 加载Spring容器
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 从Spring容器中获取管理的Bean对象
        HelloWorld helloWorld = (HelloWorld) ac.getBean("helloWorld");
        // 执行Bean对象对应的方法
        helloWorld.sayHello();
        logger.info("okok");
    }
}

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

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

相关文章

互联网医院系统的优势与挑战:现状调研分析

随着互联网技术的不断发展和普及&#xff0c;互联网医院系统也逐渐走进人们的视野。这种以互联网技术为支撑的医疗服务模式&#xff0c;可以为患者提供更加便捷、快速和高效的医疗服务&#xff0c;同时也可以缓解医院资源短缺的问题。 一、互联网医院系统的优势 方便快捷 互联…

chatgpt赋能Python-python_josn

Python Json&#xff1a;简介与应用 什么是Json&#xff1f; JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;具有良好的可读性和易于解析性&#xff0c;广泛用于Web数据传输和API交互中。 Python中的Json模块 在Python中&…

chatgpt赋能Python-python_imessage

Python iMessage – 给你的消息通讯锦上添花 作为一款风靡全球的通讯工具&#xff0c;iMessage的使用率在近年来不断攀升。iMessage的简洁易用性以及其在安全性和隐私方面的优势&#xff0c;经常使得其成为个人和商业用户的首选。而Python iMessage&#xff0c;则为这项通讯工…

Day49【动态规划】121.买卖股票的最佳时机、122.买卖股票的最佳时机II

121.买卖股票的最佳时机 力扣题目链接/文章讲解 视频讲解 动态规划五部曲&#xff01; 1、确定 dp 数组下标及值的含义 先想想本题 dp 应该怎么定义&#xff0c;别忘了之前说的&#xff0c;dp 数组的下标能够表示状态 在股票问题中&#xff0c;某个状态需要描述在某天&…

煤矿电子封条智能监管系统 TensorFlow

煤矿电子封条智能监管系统基于TensorFlowAI开源的机器学习的框架&#xff0c;煤矿电子封条智能监管系统可以对设备及人员行为和穿戴着装进行实时监测和管理。相比于其他的机器学习框架&#xff0c;Tensorflow 框架是最适用于工业部署的一个机器学习框架&#xff0c;换句话说&am…

数链科技用飞桨和文心大模型打造大宗商品数字供应链系统,提升行业透明度及标准化

大宗商品行业市场规模巨大、关系国计民生&#xff0c;它的三个核心类别——能源商品、基础原材料、农副产品均在我国经济发展进程中起着举足轻重的作用。这其中&#xff0c;大宗商品供应链的顺畅运行和稳定发展对整个产业链的运作至关重要。 然而传统大宗商品供应链普遍存在交易…

测试的正向思维和反向思维

测试的正向思维和反向思维 正向思维和反向思维是两种不同的思考方式&#xff0c;它们在决策和问题解决中起着重要的作用。 正向思维指的是以积极、乐观的态度看待事情&#xff0c;从优点出发&#xff0c;寻找解决问题的方法和途径。正向思维的人通常更容易接受挑战&#xff0c;…

Guitar Pro8最新五线谱转六线谱软件

提到吉他谱的编写&#xff0c;有一款软件总是被第一时间想到&#xff0c;那就是Guitar Pro。 Guitar Pro8所开启的音乐未来&#xff0c;不仅仅是一种全新的学习乐器方式。更在于对整个乐队的掌控&#xff0c;将弦乐的悠然和打击乐的劲爆尽收其间&#xff01; 同时&#xff0c;…

vmware安装debian 11.7.0

vmware安装debian 11.7.0 1、下载镜像2、创建并安装debian 11虚拟机2.1 选择 Graphical install2.2、选择安装过程显示语言和系统语言2.3、选择地区2.4、键盘映射2.5、设置主机名-debian2.6、设置网络-直接跳过2.7、设置root密码2.8、创建普通账户2.9、为普通账户设置密码2.10、…

ClickHouse:(一)安装部署

1.准备工作 1.2关闭防火墙 防火墙的开启、关闭、禁用命令 &#xff08;1&#xff09;设置开机启用防火墙&#xff1a;systemctl enable firewalld.service&#xff08;2&#xff09;设置开机禁用防火墙&#xff1a;systemctl disable firewalld.service&#xff08;3&#x…

VIBRO-METER VM600 AMC8 8个温度或过程监控通道

VM600 AMC8模拟监控卡 8个温度或过程监控通道每个通道1个已处理输出&#xff0c;每个多通道1个已处理输出(每个am c8 4个)高度可配置的卡支持使用热电偶和/或RTD进行温度监控&#xff0c;以及使用电流和/或电压输入进行过程监控高度集成的卡对(带IOC8T)包括DC输出、继电器和串行…

麒麟V10-arm安装conan

Conan基于Python编写&#xff0c;故需要在开始前安装好 Python3 一. 安装Python 1. 查看Python版本 python -v 若显示Python版本&#xff0c;则已安装&#xff0c;无需再次安装。若提示没有此命令(No command python found)&#xff0c;则表示没有安装Python。若Python版本过…

十五周算法训练营——快慢指针

今天是十五周算法训练营的第八周&#xff0c;主要讲快慢指针专题。&#xff08;欢迎加入十五周算法训练营&#xff0c;与小伙伴一起卷算法&#xff09; 移除元素 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数…

UDF提权(linux)

实验环境&#xff1a; RAVEN靶场&#xff1a;链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;g6oz 攻击机&#xff1a;kali 2023.3 IP&#xff1a;192.168.126.142 关于UDF提权&#xff0c;需要满足的条件是 1.数据库管理员权限运行 #如果权限过低&#xff…

安装docker compose

1.定义 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose&#xff0c;您可以使用 YML 文件来配置应用程序需要的所有服务&#xff0c;然后使用一个命令来创建并启动所有服务。Compose 有三个主要步骤&#xff1a; - 使用 Dockerfile 定义应用…

简历里项目经历怎么写,没有项目经历怎么办?

在撰写简历时&#xff0c;项目经历是一个非常重要的部分&#xff0c;能够有效地展示个人的能力和经验。但是&#xff0c;如果你没有项目经历怎么办呢&#xff1f;以下是一些关于如何写简历项目经历的建议&#xff0c;以及如何克服没有项目经历的挑战。 一、如何写简历项目经历 …

史上最详细的RACI(责任分配矩阵)使用方法及实例详解

作为PMO和项目经理一定对于RACI责任分配矩阵不陌生&#xff0c;但是很少有人真正用起来&#xff0c;RACI是一个广泛应用于项目管理的模型&#xff0c;用于明确角色和责任。 在项目的不同阶段或任务中&#xff0c;RACI模型有助于划分和理解团队成员的责任。今天咱们就为大家详细…

R语言绘制山脊图(也叫峰峦图、山峦图)

山脊图也叫也叫峰峦图、山峦图&#xff0c;主要是通过展示一个相同的X轴数据&#xff0c;可以是时间序列、基因数据等&#xff0c;对应不同的Y轴数据&#xff0c;清晰的展示不同数据见变量的关系。今天我们通过R语言来演示山脊图。需要使用到ggridges包&#xff0c;需要提前安装…

Hive ---- 查询

Hive ---- 查询 1. 基础语法2. 基本查询&#xff08;Select…From&#xff09;1. 数据准备2. 全表和特定列查询3. 列别名4. Limit语句5. Where语句6. 关系运算函数7. 逻辑运算函数8. 聚合函数 3. 分组1. Group By语句2. Having语句 4. Join语句1. 等值Join2. 表的别名3. 内连接…

vue:el-table初始化表格选中项踩坑记录/element-ui表格

问题描述 首先&#xff0c;element-ui表格多选功能可以参考官网示例&#xff1a;表格数据多选&#xff1b;手动在表格中选取数据、通过监听selection-change获取选中项&#xff0c;实现起来非常顺利~ 但在保存了选项、重新加载表格时&#xff0c;希望将已选项“打勾”却完全没…