【Spring 基础】00 入门指南

【Spring 基础】00 入门指南

文章目录

  • 【Spring 基础】00 入门指南
    • 1.简介
    • 2.概念
      • 1)控制反转(IoC)
      • 2)依赖注入(DI)
    • 3.核心模块
      • 1)Spring Core
      • 2)Spring AOP
      • 3)Spring MVC
      • 4)Spring Data
      • 5)Spring Boot
    • 4.编写 Hello World
      • 1)创建 Maven 项目
      • 2)编写 Hello World 程序
      • 3)编写Spring 配置文件
      • 4)编写启动程序
      • 5)运行
    • 总结

Spring 框架是 Java 领域最最流行和最最强大的开发框架 没有之一

Spring 框架是 Java 领域最最流行和最最强大的开发框架 没有之一

Spring 框架是 Java 领域最最流行和最最强大的开发框架 没有之一

重要的事情,一定要说三遍。纵观历史在它的成长过程中,竞争对手确实存在,但是其对手最后都成为了陪衬!

1.简介

Spring 它为我们提供了广泛的功能,包括依赖注入、面向切面编程、数据访问、事务管理等等,使得 Java 应用程序的开发更加简便和高效。

下图来源:

https://docs.spring.io/spring-framework/docs/5.0.0.RC3/spring-framework-reference/overview.html

在这里插入图片描述

本文将为你提供一个简洁而全面的 Spring 框架入门指南,纯粹是为了能够快速掌握基础概念,并开始构建自己的 Spring 应用程序。

2.概念

Spring 框架是一个全面的Java应用程序开发框架,它提供了解决企业级应用开发问题的综合性解决方案。核心特性包括 控制反转(IoC)和 依赖注入(DI),使得组件之间的松散耦合成为可能。接下来就让我们先去了解一下 IoC 和 DI 的基本概念吧。

在这里插入图片描述

1)控制反转(IoC)

控制反转是一种设计原则,它将应用程序的控制权从应用程序代码中转移到外部容器。在 Spring 中,IoC 体现为将对象的创建和管理交给 Spring 容器,而不是由开发者手动管理。这通过使用 Spring 容器来实现,其中最核心的是 Bean 。

2)依赖注入(DI)

依赖注入是 IoC 的一种实现方式,它指的是将一个对象的依赖关系注入到对象本身,而不是在对象内部创建或查找依赖对象。Spring 通过 DI 来实现 IoC 确保对象之间的解耦。

3.核心模块

Spring 框架由多个模块组成,每个模块都提供不同的功能

以下是Spring的一些核心模块:

1)Spring Core

Spring Core 模块包括 IoC 容器、Bean 定义、Bean 的生命周期管理等。

2)Spring AOP

Spring AOP 模块支持面向切面编程,允许你在应用程序中定义横切关注点,并在需要时将它们应用到代码中。

3)Spring MVC

Spring MVC 模块是一个基于MVC(Model-View-Controller)设计模式的 Web 框架,用于构建 Web 应用程序。

4)Spring Data

Spring Data 模块简化了数据访问,支持多种数据存储,包括关系型数据库、NoSQL 数据库等。

5)Spring Boot

重磅嘉宾,往往都是压轴出场!

Spring Boot 模块用于简化 Spring 应用程序的开发和部署。它提供了自动配置、开箱即用的特性,使得构建独立的、生产级别的Spring应用变得更加容易。

4.编写 Hello World

现在让我们回到本节的主角,通过一个简单的实例来展示如何使用 Spring 框架构建一个基本的应用程序。

1)创建 Maven 项目

这里使用 [IDEA 工具]: (https://blog.csdn.net/yanyc0411/article/details/134746097) 开发

首先,点击 File -> New -> Project,输入项目信息(Name等),点击 Create 按钮

在这里插入图片描述

然后,打开 pom.xml 添加 maven 依赖(spring-context),一定要点 maven 的刷新按钮!

在这里插入图片描述

pom.xml

<dependencies>
   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-context</artifactId>
       <version>5.3.31</version>
   </dependency>
</dependencies>

2)编写 Hello World 程序

编写一个简单的 Java 应用程序,打印 Hello World ,从 Spring 容器中获取 Bean 并调用其打印方法。

首先,在 java 上点击鼠标右键 -> New -> Java Class ,输入名称(此处直接把包创建出来啦),点击回车

然后,再打开 SpringDemo,添加打印 Hello World 的方法

在这里插入图片描述

SpringDemo.java

public class SpringDemo {
    public void hello() {
        System.out.println("Hello World");
    }
}

3)编写Spring 配置文件

创建一个 Spring 配置文件(例如:applicationContext.xml),定义一个简单的 Bean 。

首先,在 resources 上点击鼠标右键 -> New -> File ,输入名称,点击回车

然后,再打开 applicationContext.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">
    <!-- 定义一个Bean -->
    <bean id="springDemo" class="org.example.cheney.SpringDemo">
    </bean>
</beans>

4)编写启动程序

首先,在 org.example.cheney 包上点击鼠标右键 -> New -> Java Class,输入名称,点击回车

然后,再打开 App,添加 从 Spring 容器中获取 SpringDemo 实例,并执行 hello 方法的代码

在这里插入图片描述

App.java

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    public static void main(String[] args) {
        String location = "applicationContext.xml";
        ApplicationContext context = new ClassPathXmlApplicationContext(location);
        // 从容器中获取Bean
        SpringDemo springDemo = (SpringDemo) context.getBean("springDemo");
        // 调用Bean的方法
        springDemo.hello();
    }
}

5)运行

点击 小绿三角,然后点击 Run xxx,最后就在控制台看到 Hello World 啦

在这里插入图片描述

输出结果:

Hello World

这只是 Spring 框架入门的简单示例。随着深入学习,你将能够利用 Spring 的强大功能构建更复杂的应用程序。

总结

通过本文,你已经了解了Spring框架的核心概念、模块和实际应用。以及详细的写了一个 SpringDemo 样例去打印 Hello World,要深入学习,建议查阅Spring的官方文档。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用python 网络自动化统计交换机有多少端口UP

用python统计交换机有多少端口UP 用python统计交换机有多少端口UP&#xff0c;可以间接的反馈有多少个用户在线。我们使用上次的脚本将可达的网络设备ip统计到reachable_ip.txt中&#xff0c;这次我们使用reachable_ip.txt来登陆设备来统计多少端口是UP的 云配置 拓扑 交换机…

ModuleNotFoundError: No module named ‘docx‘

ModuleNotFoundError: No module named ‘docx’ 文章目录 ModuleNotFoundError: No module named docx背景报错问题报错翻译报错位置代码报错原因解决方法今天的分享就到此结束了 背景 在使用之前的代码时&#xff0c;报错&#xff1a; Traceback (most recent call last): Fi…

循环依赖:解析软件设计的迷局

目录 引言 循环依赖的本质 影响与挑战 1. 编译和构建问题 2. 耦合度增加 3. 难以进行单元测试 4. 可扩展性降低 解决循环依赖的策略 1. 模块重构 2. 引入接口抽象 3. 依赖注入 4. 模块化与分层设计 5. 使用工具进行分析 实际案例&#xff1a;Spring框架的循环依赖…

Redis高效恢复策略:内存快照与AOF

第1章&#xff1a;Redis宕机恢复的重要性和挑战 大家好&#xff0c;我是小黑。今天咱们来聊聊Redis宕机后的恢复策略。想象一下&#xff0c;你的网站突然宕机了&#xff0c;所有的数据都飘了&#xff0c;这种情况下&#xff0c;快速恢复数据就显得尤为重要。Redis作为一个高性…

令牌桶算法理解学习(限流算法)

令牌桶算法是网络流量整形&#xff08;Traffic Shaping&#xff09;和速率限制&#xff08;Rate Limiting&#xff09;中最常使用的一种算法。典型情况下&#xff0c;令牌桶算法用来控制发送到网络上的数据的数目&#xff0c;并允许突发数据的发送。 用简单的话语来说就是限制…

研表究明,文字的序顺并不定一能响影GPT-4读阅

深度学习自然语言处理 原创作者&#xff1a;yy 很多年前&#xff0c;你一定在互联网上看过这张图&#xff0c;展示了人脑能够阅读和理解打乱顺序的单词和句子&#xff01;而最近东京大学的研究发现&#xff0c;大语言模型&#xff08;LLMs&#xff09; 尤其是 GPT-4&#xff0c…

STM32 标准外设SPL库、硬件抽象层HAL库、低层LL库区别?

1、STM32 之一 HAL库、标准外设库、LL库_ZCShou的博客-CSDN博客_ll库&#xff08;仔细阅读&#xff09; 2、STM32标准外设库、 HAL库、LL库 - King先生 - 博客园 3、STM32 之 HAL库_戈 扬的博客&#xff08;仔细阅读&#xff09; 4、STM32 LL 为什么比 HAL 高效&#xff1…

文档或书籍扫描为 PDF:ScanPapyrus Crack

ScanPapyrus 可让您快速轻松地将文档或书籍扫描为 PDF&#xff0c;批处理模式使扫描过程快速高效&#xff0c;自动处理书籍并将其拆分为单独的页面 用于快速扫描文档、书籍或打印照片的扫描仪软件 快速扫描文档 使用此扫描仪软件&#xff0c;您无需在扫描仪和计算机之间来回移动…

架构LNMP

目录 1.安装Nginx服务 2.安装 MySQL 服务 3.安装配置 PHP 解析环境 4.部署 Discuz&#xff01;社区论坛 Web 应用 1.安装Nginx服务 实验准备 systemctl stop firewalld systemctl disable firewalld setenforce 0 安装依赖包 yum -y install pcre-devel zlib-devel gcc…

【Python】Selenium自动化测试框架

设计思路 本文整理归纳以往的工作中用到的东西&#xff0c;现汇总成基础测试框架提供分享。 框架采用python3 selenium3 PO yaml ddt unittest等技术编写成基础测试框架&#xff0c;能适应日常测试工作需要。 1、使用Page Object模式将页面定位和业务操作分开&#xff0…

Gilisoft Video Editor——迈出剪辑的第一步

今天博主分享的是又一款剪辑软件——视频剪辑手&#xff08;GiliSoft Video Editor&#xff09;&#xff0c;对剪辑视频感兴趣的小伙伴千万不要错过。这是一款专门用于视频剪辑的软件&#xff0c;功能比较简单&#xff0c;相比于专业的pr是比不了的&#xff0c;但是制作一些简单…

C/C++ 编程规范总结

目录 前言 一、编程规范的作用 二、规范的三种形式 三、规范的内容 1. 基本原则 原则1-1 原则1-2 原则1-3 原则1-4 原则1-5 原则1-6 原则1-7 2. 布局 规则2-1-1 规则2-1-2 规则2-1-3 规则2-1-4 规则2-1-5 规则2-1-6 规则2-2-1 规则2-2-2 规则2-2-3 建议2…

掌握iText:轻松处理PDF文档-基础篇

关于iText iText是一个强大的PDF处理库&#xff0c;可以用于创建、读取和操作PDF文件。它支持PDF表单、加密和签署等操作&#xff0c;同时支持多种字体和编码。maven的中央仓库中的最新版本是5.X&#xff0c;且iText5不是完全免费的&#xff0c;但是基础能力是免费使用的&…

pWnOS v2.0

该靶机绑定了静态IP地址 10.10.10.100&#xff0c;所以这里需要修改我们的网络配置&#xff01;整个网段修改为10.10.10.0/24 信息收集 主机存活探测 arp-scan -l 端口信息探测 nmap -sT --min-rate 10000 -p- 10.10.10.100 &#xff08;只开放了22 80端口&#xff09; 服务…

2023-12-10 LeetCode每日一题(爬楼梯)

2023-12-10每日一题 一、题目编号 70. 爬楼梯二、题目链接 点击跳转到题目位置 三、题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 示例 2&#xff1a; 提…

【Python】手把手教你用tkinter设计图书管理登录UI界面(三)

上一篇&#xff1a;【Python】手把手教你用tkinter设计图书管理登录UI界面&#xff08;二&#xff09;-CSDN博客 下一篇&#xff1a; 紧接上一篇文章&#xff0c;继续完善项目功能&#xff1a;用户登录。由于老王的注册部分有亿点点复杂&#xff0c;还没完成&#xff0c;但是…

期末速成数据库极简版【分支循环函数】(4)

目录 全局变量&局部变量 局部变量定义declare 局部变量赋值select 局部变量赋值select 【1】分支结构IF 【2】分支结构CASE 简单CASE语句 搜索CASE语句 【3】循环结构While 【4】系统函数 常用字符串函数 时间函数 【5】自定义函数—标量函数 函数创建 函…

oops-framework框架 之 Excel转Json

引擎&#xff1a; CocosCreator 3.8.0 环境&#xff1a; Mac Gitee: oops-plugin-excel-to-json 注&#xff1a; 作者dgflash的oops-framework框架QQ群&#xff1a; 628575875 配置 作者dgflash在oops-framework的框架中&#xff0c;提供了关于Excel数据表转换为Json和TypeSc…

typora中显示除号的问题

问题 在latex中“除号&#xff08; \div &#xff09;” 通常用 \div。但在typora中写数学公式时&#xff0c;却发现 “除号” 如果使用 \div 并没有显示为 “ \div ”&#xff0c;而是 “ ∇ ⋅ \nabla \cdot ∇⋅ ”。 原因 typora中&#xff0c;\div 显示为 ∇ ⋅ \…

Html转PDF,前端JS实现Html页面导出PDF(html2canvas+jspdf)

Html转PDF&#xff0c;前端JS实现Html页面导出PDF&#xff08;html2canvasjspdf&#xff09; 文章目录 Html转PDF&#xff0c;前端JS实现Html页面导出PDF&#xff08;html2canvasjspdf&#xff09;一、背景介绍二、疑问三、所使用技术html2canvasjspdf 四、展示开始1、效果展示…