Spring之最基础的创建与Bean的存储与获取(还有Maven加载jar包报错的解决方法)
目录
创建Spring项目
如何解决Maven加载jar包报错
存储Bean和取Bean
在Java中对象也称为Bean。所以后面我提到Bean,大家要知道我说的是什么。
创建Spring项目
我的idea是2022版本的,如果大家和我一样可以参考我的。
1.创建一个Maven项目。图片上忘了介绍,JDK下面有个勾选的地方,Add sample code这个我们不要勾选,勾选了就会给我们增加示例代码。

大家加载完成后,没问题的话应该和我这个一样:

如果很多人的加载不完,一直转圈,或者有的人的直接报错,大家可以按照下面的内容进行修改然后再重新加载。
2.此时,我们的项目还并不是一个Spring项目,我们需要在pom.xml中导入Spring依赖,我的JDK为8的,所以导入的Spring依赖不能为6开头的。写完之后,我们不要忘记点击右上角更新我们的maven仓库。
<dependencies><!--导入Spring依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.37</version></dependency></dependencies>
3.更新完maven仓库后,此时,我们的项目才可以称为Spring项目。
如何解决Maven加载jar包报错
由于Maven是从国外的服务器上下载jar包,当超过一定时间还没有下载完成,那自然会进行报错,我们需要配置国内镜像,请大家根据我的步骤来进行操作。
1.修改当前项目的maven。

2.点击setting,然后查找Maven,修改路径。修改完成后,我们点击APPLY再点击OK。注意!我们在里面设置了setting.xml,我们就必须存在这个文件,否则就报错了!

3.按照和第二步骤同样的方法,找到新建项目中的maven,去修改对应路径,此时修改的是全局的maven路径,每次我们创建了新项目后,路径都是这个,就不用每次都进行修改了。这个每个版本不一样,所在地方不同,大家自己找找哈。
4.如果大家不存在settings.xml文件,大家可以来管我要,我给你们我的一个,直接粘贴到对应的位置上就行,如果大家都有settings.xml,那么我们接下来就要配置镜像源了。在文件中找到mirrors的地方,镜像的代码存进去。
<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>

然后保存起来,此时我们重新加载我们项目中的maven。应该就没问题了。

存储Bean和取Bean
我们创建好Spring后,我们得把我们要Spring帮我们创建的对象告诉Spring,要不他不知道哪些类交给Spring管理了,哪些类不用它管理。
1.首先我们先创建一个学生类。
public class Student {public void study() {System.out.println("学生们在学习!!!");}
}
2.这个类我不想自己创建对象,我想交给Spring帮助我们完成,我们首先需要创建一个配置文件。
配置文件resources文件中,配置文件名字我们可以自己随便起,但是后缀名必须为xml。


3.在我们创建好的配置文件中,把下面这段代码粘贴过去。
<?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">
</beans>
4.将我们的Bean(学生类)存入到Spring中。

5.创建一个启动类(就是在这个类里面去获取对象)。
(1)首先获取Spring上下文对象,有两种方式
//方式一:
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");//方式二:
BeanFactory beanFactory = new XmlBeanFactory( new ClassPathResource("spring-config.xml"));//两种方式后面括号中存放的是我们配置文件的名字。
两者最终实现的效果一样,但是两者之间也存在区别。(面试题可能会考)
A.ApplicationContext和BeanFactory两者之间存在父子关系,前者是后者的子类。
B.BeanFactory提供了基础的访问容器的能力,既然ApplicationContext是BeanFactory的子类,那么就代表ApplicationContext也具备访问容器的能力,但是ApplicationContext除了具备了BeanFactory的功能外还具备了自己独特的功能:资源的支持,国际化的支持等。
C.这点区别也算最重要的!!BeanFactory在程序开始执行的时候,不会将配置文件中存放到容器的Bean全部加载了,只是需要哪个就加载哪个,而ApplicationContext则是配置文件中不管有多少Bean存放到Spring中,都是一次性的将所有的Bean加载并初始化。
(2)通过上下文对象取出我们的存入到Spring中的Bean对象。(这里我用的是ApplicationContext获得上下文对象,一般也是用这个)
会调用getBean方法获取相应的对象。这个getBean方法进行了重载,所以有三种形式。大家看下面的代码
//通过上下文对象获取到bean对象//方式一:通过存入的id来取出对象//id是我们在配置文件中<bean>标签中设置的id要对应上!由于getBean()返回类型为Object,所以要强转。Student student = (Student) context.getBean("student");//方式二:通过类取出对象,后面括号中填写的是类名.class,getBean(类.class)返回的就是对应的类,不用强转Student student1 = context.getBean(Student.class);//方式三(建议大家都采用这种):通过id和类取出对象Student student2 = context.getBean("student",Student.class);
A.当我们采用类名的时候,会有弊端,当我们同一个Bean类,我们存入Spring多次,每次都起不同的名字,当我们通过类访问的时候会报错。(因为它不唯一,Spring不知道你想用哪个)

B.当我们用id访问对象的时候,如果我们类少的时候,可以保证id可能不会重复,当我们有很多的时候,我们可能会造成id重复,此时访问也会报错。原因就是,你不同类采用了同样的id,Spring怎么知道你实际想用的哪个呢?

C.所以为了rangSpring更加清楚的知道我们究竟想用哪个Bean对象,我们最好采用第三种方式。
(3)我们从Spring中获得了对象后,我们就可以运用了,操作对象中的属性或方法等。
相关文章:
Spring之最基础的创建与Bean的存储与获取(还有Maven加载jar包报错的解决方法)
目录 创建Spring项目 如何解决Maven加载jar包报错 存储Bean和取Bean 在Java中对象也称为Bean。所以后面我提到Bean,大家要知道我说的是什么。 创建Spring项目 我的idea是2022版本的,如果大家和我一样可以参考我的。 1.创建一个Maven项目。图片上忘了…...
RabbitMQ应用问题 - 消息顺序性保证、消息积压问题
文章目录 MQ 消息顺序性保证概述原因分析解决方案基于 spring-cloud-stream 实现分区消费 消息挤压问题概述原因分析解决方案 MQ 消息顺序性保证 概述 a)消息顺序性:消费者消费的消息的顺序 和 生产者发送消息的顺序是一致的. 例如 生产者 发送消息顺序…...
linux tcp通讯demo
linux tcp通讯demo代码。通过用chatgpt生成的代码。做一个代码记录。 一、基本的通讯demo server.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h>…...
在 MongoDB 中,如何配置副本集以实现读写分离?
在 MongoDB 中,配置副本集以实现读写分离主要涉及以下几个步骤: 初始化副本集: 创建副本集时,需要在所有参与节点上运行 rs.initiate() 命令。这将初始化一个新的副本集。 添加成员到副本集: 使用 rs.add() 命令将所有…...
虚拟dom-Diff算法
虚拟dom-Diff算法 vue2 diff算法在vue2中就是patch,通过新旧虚拟dom对比,找到最小变化然后进行dom操作 在页面首次渲染的时候会调用一次patch并创建新的vnode,不会进行深层次的比较,然后再组件中数据发生变化的时候,…...
01创建型设计模式——单例模式
一、单例模式简介 单例模式(Singleton Pattern)是一种创建型设计模式(GoF书中解释创建型设计模式:一种用来处理对象的创建过程的模式),单例模式是其中的一种,它确保一个类只有一个实例ÿ…...
图像分割(一)
一、概述 语义分割:是把每个像素都打上标签(这个像素点是人、树、背景等) 实例分割:不光要区别类别,还要区分类别中的每一个个体 损失函数:逐像素的交叉熵;样本均衡问题 MIOU指标:…...
C++ 新经典:设计模式 目录(先留框架,慢慢来~)
C 新经典:设计模式 C 新经典:设计模式 C 新经典:设计模式第1章 设计模式与软件开发思想、编程环境介绍第2章 模板方法模式第3章 工厂模式、原型模式、建造者模式第4章 策略模式第5章 观察者模式第6章 装饰模式第7章 单件模式第8章 外观模式第…...
go之命令行工具urfave-cli
一、urfave/cli urfave/cli 是一个声明性的、简单、快速且有趣的包,用于用 Go 构建命令行工具。 二、快速使用 2.1 引入依赖 go get github.com/urfave/cli/v2 2.2 demo package mainimport ("fmt""log""os""github.com/ur…...
四种应用层协议——MQTT、CoAP、WebSockets和HTTP——在工业物联网监控系统中的性能比较
目录 摘要(Abstract) 实验设置 实验结果 节选自《A Comparative Analysis of Application Layer Protocols within an Industrial Internet of Things Monitoring System》,作者是 Jurgen Aquilina、Peter Albert Xuereb、Emmanuel Francalanza、Jasmine Mallia …...
MySQL的脏读、不可重复读、幻读与隔离级别
脏读/不可重复读/幻读 脏读 脏读(Dirty Read)发生在一个事务读取了另一个事务尚未提交的数据。如果第二个事务失败并回滚,第一个事务读到的数据就是错误的。这意味着数据从一开始就是不稳定或者“脏”的。 举例 事务A读取了某条记录的值为X。事务B修改该记录的值…...
程序员前端开发者的AI绘画副业之路:在裁员危机中寻找新机遇
正文: 在这个充满变数的时代,作为一名前端开发者,我经历了行业的起伏,见证了裁员危机和中年失业危机的残酷。在这样的背景下,我开始了利用AI绘画作为副业的探索,不仅为了寻求经济上的稳定,更是为…...
Burp Suite的使用和文件上传漏洞靶场试验
第一步:分析如何利用漏洞,通过对代码的查阅发现,代码的逻辑是先上传后删除,意味着,我可以利用webshell.php文件在上传到删除之间的间隙,执行webshell.php的代码,给上级目录创建一个shell.php木马…...
如何在Ubuntu中安装deepin wine版的企业微信
如何在Ubuntu中安装deepin wine版的企业微信 运行如下一条命令将移植仓库添加到系统中 wget -O- https://deepin-wine.i-m.dev/setup.sh | sh自此以后,你可以像对待普通的软件包一样,使用apt-get系列命令进行各种应用安装、更新和卸载清理了。 安装企业…...
案例:Nginx + Tomcat集群(负载均衡 动静分离)
目录 案例 案例环境 案例步骤 部署Tomcat服务器 部署Nginx服务器 实现负载均衡和读写分离 日志控制 案例 案例环境 操作系统 IP 地址 角色 CentOS 192.168.10.101 Nginx服务器(调度器) CentOS 192.168.10.102 Tomcat服务器① CentOS 1…...
【密码学】密码协议的分类:②认证协议
密码协议的分类有很多种方式,这里我采取的是基于协议实现的目的来分类。可以将密码协议分成三类:认证协议、密钥建立协议、认证密钥建立协议。 一、认证协议是什么? 认证协议都在认证些什么东西呢?认证一般要认证三个东西&#x…...
异步编程(Promise详解)
目录 异步编程 回调函数 回调地狱 Promise 基本概念 Promise的特点 1.Promise是一种构造函数 2.Promise接收函数创建实例 3.Promise对象有三种状态 4.Promise状态转变不可逆 5.Promise 实例创建即执行 6.Promise可注册处理函数 7.Promise支持链式调用 Promise的静…...
DjangoORM注入分享
DjangoORM注入 简介 这篇文章中,分享一些关于django orm相关的技术积累和如果orm注入相关的安全问题讨论。 攻击效果同数据库注入 从Django-Orm开始 开发角度 Django ORM(Object-Relational Mapping)是Django框架中用于处理数…...
【HBZ分享】Redis各种类型的数据结构应用场景
String(字符串类型) 计数器: incr / decr, 比如商品库存,业务号的发号器业务数据key-value缓存, 缓存结果数据,提高网站性能,缓解DB压力分布式session会话, 集群环境下存储token鉴权信息分布式锁ÿ…...
anaconda创建并且配置pytorch(完整版)
📚博客主页:knighthood2001 ✨公众号:认知up吧 ** 🎃知识星球:【认知up吧|成长|副业】介绍** ❤️如遇文章付费,可先看看我公众号中是否发布免费文章❤️ 🙏笔者水平有限,欢迎各位大…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
【Redis】Redis 的持久化策略
目录 一、RDB 定期备份 1.2 触发方式 1.2.1 手动触发 1.2.2.1 自动触发 RDB 持久化机制的场景 1.2.2.2 检查是否触发 1.2.2.3 线上运维配置 1.3 检索工具 1.4 RDB 备份实现原理 1.5 禁用 RDB 快照 1.6 RDB 优缺点分析 二、AOF 实时备份 2.1 配置文件解析 2.2 开启…...
可视化图解算法48:有效括号序列
牛客网 面试笔试 TOP101 | LeetCode 20. 有效的括号 1. 题目 描述 给出一个仅包含字符(,),{,},[和],的字符串,判断给出的字符串是否是合法的括号序列 括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列&…...
上位机知识篇---Flask框架实现Web服务
本文将简单介绍Web 服务与前端显示部分,它们基于Flask 框架和HTML/CSS/JavaScript实现,主要负责将实时视频流和检测结果通过网页展示,并提供交互式状态监控。以下是详细技术解析: 一、Flask Web 服务架构 1. 核心路由设计 app.…...

