创建第一个 Spring 项目(IDEA社区版)

文章目录

  • 创建 Spring 项目
    • 创建一个普通的 Maven 项目
    • 添加 Spring 依赖
      • IDEA更换国内源
  • 运行第一个 Spring 项目
    • 新建启动类
    • 存储 Bean 对象
      • 将Bean注册到Spring
    • 获取并使用 Bean 对象

创建 Spring 项目

创建一个普通的 Maven 项目

首先创建一个普通的 Maven 项目

image-20240125161144363

image-20240125161300778

添加 Spring 依赖

在项⽬的 pom.xml 中添加 Spring 框架的⽀持

image-20240125161459786

<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.2.3.RELEASE</version></dependency>
</dependencies>

注意在xml 文件里添加代码后只是声明了而已,项目并没有加载,需要点击:

image-20240125161650187

刷新加载依赖。

这个重新加载依赖默认是从国外的官网去下载的,因此速度会很慢。

需要更换IDEA 的源为国内源

IDEA更换国内源

第一步打开IDEA的设置里找到 Maven 的设置选项栏

image-20240125161924606

第二步:查看 “User settings file”该栏上的路径里是否存在 “settings.xml”文件,如果没有手动创建 settings.xml 文件并添加以下代码

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><pluginGroups></pluginGroups><proxies></proxies><servers></servers><mirrors><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>        </mirror></mirrors><profiles></profiles>
</settings>

第三步:添加完 settings.xml 文件后,将该路径下的 repository 文件夹下的所有文件都删掉之后重新下载加载依赖

image-20240125162523859

等待完成即可

运行第一个 Spring 项目

新建启动类

上述说明已经是成功的创建了一个 Spring 项目了,接下来就将项目运行起来。

首先需要在 src下的main下的java里新建一个启动类,这个启动类里包含了main方法

image-20240125163002617

Spring 项目的运行都是从这个main方法开始的

存储 Bean 对象

对于 Spring 而言每一个存到里面的对象都称为 Bean 对象。也就是说我们需要用到什么类都得先写好类之后存到 Spring 中

例如 现在新建了一个学生类

image-20240125163447211

将Bean注册到Spring

那么有了 Bean 之后就得将 Bean 注册到 Spring 中。这就的借助一个 xml文件。

在 src中的main中的resources中新建一个 xml 文件并写入如下代码

image-20240125163740360

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:content="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd">
</beans>

上述的代码和操作是固定不变的,然后在 beans 中加入我们需要注册的 Bean,操作如下

image-20240125163940969

<bean id="student" class="spring.demo.Student"></bean>
  1. 在bean里面的 id属性就是注册到Spring中该Bean的标识,可任取但是获取Bean的时候需要用到,因此推荐合理合规的取名
  2. 在bean里面的class属性是注册的这个Bean所在的路径,从java这个包下的子包开始算起

获取并使用 Bean 对象

上述已经将 Bean 注册到 Spring 中了,那么接下来就开始从 Spring 中获取到 Bean 对象去进行使用

首先这个 Bean 已经是在 Spring 中了,所以需要先获取到 Spring 的上下文对象,然后从该对象中获取到 Bean 对象。以下操作均在启动类中进行

获取Bean对象的方法有很多种,本文章不深究方法,仅介绍 Spring 项目的运行

// 获取 Spring 的上下文对象
ApplicationContext context =new ClassPathXmlApplicationContext("spring-config.xml");

这里需要特别注意,传的参数必须与刚刚所建的xml文件名一致,并且需要带上 .xml 后缀名

// 获取 Bean 对象
Student student = (Student) context.getBean("student");

注意:需要获取哪个 Bean 对象,就需要传入在注册 Bean使所设置的id属性的值

// 使用 Bean 对象
student.print("hello world");

获取到Bean 对象后就可以正常使用对象了

运行项目即可

image-20240125165207556

可以看到 Student类的构造函数也被执行了,说明将Student类存入到Spring时,Spring存的就是Student类的实例

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

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

相关文章

微信小程序打卡定位实现方案

1背景 业务场景是考勤打卡,在考勤打卡这个业务场景中有两个关键技术点:定位和人员识别。用户界面初步确定是用微信小程序来实现,本文就定位问题做了技术上的调研。 2调研内容 平台注意事项 获取位置 选择位置 查看位置 距离计算 定位精度 防作弊 Demo 3调研结果 3.1平台注…

全面解析开源大语言模型:BLOOM

大型语言模型 &#xff08;LLM&#xff09; 的兴起一直是自然语言处理 &#xff08;NLP&#xff09; 领域的一个决定性趋势&#xff0c;导致它们在各种应用程序中的广泛采用。然而&#xff0c;这种进步往往是排他性的&#xff0c;大多数由资源丰富的组织开发的 LLM 仍然无法向公…

什么是servlet

什么是servlet 什么是servlet Servlet&#xff08;Server Applet&#xff09;是 Java Servlet 的简称&#xff0c;称为小服务程序或服务连接器&#xff0c;用 Java 编写的服务器端程序&#xff0c;具有独立于平台和协议的特性&#xff0c;主要功能在于交互式地浏览和生成数据…

java数据结构与算法刷题-----LeetCode769. 最多能完成排序的块

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 解题思路 这道题可以理解为&#xff0c;只能保证块内有序的情况下&#xf…

大模型学习笔记一:大模型应用开发基础

文章目录 一、大模型一些概念介绍 一、大模型一些概念介绍 1&#xff09;产品和大模型的区别&#xff08;产品通过调用大模型来具备的能力&#xff09; 2&#xff09;AGI定义 概念&#xff1a;一切问题可以用AI解决 3&#xff09;大模型通俗原理 根据上文&#xff0c;猜测下…

WordPress反垃圾评论插件Akismet有什么用?如何使用Akismet插件?

每次我们成功搭建好WordPress网站后&#xff0c;都可以在后台 >> 插件 >> 已安装的插件&#xff0c;在插件列表中可以看到有一个“Akismet反垃圾邮件&#xff1a;垃圾邮件保护”的插件&#xff08;个人觉得是翻译错误&#xff0c;应该是反垃圾评论&#xff09;。具…

vue实现在线Excel表格功能

目录 1.安装x-data-spreadsheet xlsx 2.引入 3.使用 1.安装x-data-spreadsheet xlsx npm i x-data-spreadsheet xlsx2.引入 import zhCN from "x-data-spreadsheet/src/locale/zh-cn"; import Spreadsheet from "x-data-spreadsheet"; import * as X…

【c++】高精度算法(洛谷刷题2024)乒乓球详解

系列文章目录 第一题 乒乓球 视频&#xff1a;http://【洛谷题单 - 算法 - 高精度】https://www.bilibili.com/video/BV1Ym4y1s7BD?vd_source66a11ab493493f42b08b31246a932bbb 目录 系列文章目录 第一题 乒乓球 前言 一、题目以及引领思考 二、题解与代码 1.输入输出案例 …

C语言实现快速排序算法(附带源代码)

快速排序 在区间中随机挑选一个元素作基准&#xff0c;将小于基准的元素放在基准之前&#xff0c;大于基准的元素放在基准之后&#xff0c;再分别对小数区与大数区进行排序。 动态效果过程演示&#xff1a; 快速排序&#xff08;Quick Sort&#xff09;是一种常用的排序算法&…

WIFI电路原理时序检修思路

uart是串口&#xff0c;bt是蓝牙&#xff0c;hsic是高速接口。pcm是音频接口。时序图的第五步是发出就绪信号&#xff0c;然后第六步与门发出就绪信号。 wifi芯片是u8_rf。 特别说明&#xff1a;short表示短接。xw表示实际是看不到物体的&#xff0c;是直接相连的。 找信号50_…

nginx部署https域名ssl证书

1、在你服务器nginx文件夹下创建ssl文件夹存放证书文件和秘钥文件 把.crt和.key证书放上 2、在nginx.conf文件中配置 在nginx.conf文件中server下加入listen 443 ssl; server {listen 443 ssl;charset utf-8;index index.html index.htm index.jsp index.do;add_heade…

【Midjourney】绘画风格关键词

1.松散素描(Loose Sketch) "Loose sketch"&#xff08;松散素描&#xff09;通常指的是一种艺术或设计中的手绘风格&#xff0c;其特点是线条和形状的表现相对宽松、自由&#xff0c;没有过多的细节和精确度。这样的素描通常用于表达创意、捕捉概念或者作为设计的初步…

docker-compose初探

我一直直接使用docker命令来创建容器&#xff0c;没有怎么用过docker-compose。也不知道docker-compose和docker有什么区别&#xff0c;docker-compose有什么好处。 现在我约略认为&#xff0c;docker-compose是一个简化docker命令的工具&#xff0c;或者说&#xff0c;它是能…

React进阶 - 14(说一说”虚拟DOM“中的”Diff算法“)

本章内容 目录 一、了解 Diff 算法二、key 值的重要性三、为什么不建议使用 index 做 key 值 上一节我们初步了解了 React中的”虚拟 DOM“ &#xff0c;本节我们来说一说”虚拟DOM“中的”Diff算法“ 一、了解 Diff 算法 在上一篇中&#xff0c;我们有讲到&#xff1a;当 st…

【ceph】ceph关于清洗数据scrub的参数分析

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

nicegui 可视化扩展库

nicegui 可视化扩展库 使用代码代码解析教程地址使用代码 from nicegui import ui from niceguiToolkit.layout import inject_layout_tool # import扩展库inject_layout_tool() # 这句是关键with ui.card().classes(

【Unity3D日常开发】Unity3D中UGUI的Text、Dropdown输入特殊符号

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 在开发中会遇到需要显示特殊符号的情况&#xff0c;比如上标、…

253.【2023年华为OD机试真题(C卷)】田忌赛马(贪心算法-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-田忌赛马二.解题思路三.题解代码Python题解代码…

防火墙在企业园区出口安全方案中的应用(ENSP实现)

拓扑图 需求&#xff1a; 1、企业出口网关设备必须具备较高的可靠性&#xff0c;为了避免单点故障&#xff0c;要求两台设备形成双机热备状态。当一台设备发生故障时&#xff0c;另一台设备会接替其工作&#xff0c;不会影响业务正常运行。 2、企业从两个ISP租用了两条链路&…

HTML 炫酷进度条

下面是代码 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>Light Loader - CodePen</title><style> html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr…