当前位置: 首页 > news >正文

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&#xff0c;大家要知道我说的是什么。 创建Spring项目 我的idea是2022版本的&#xff0c;如果大家和我一样可以参考我的。 1.创建一个Maven项目。图片上忘了…...

RabbitMQ应用问题 - 消息顺序性保证、消息积压问题

文章目录 MQ 消息顺序性保证概述原因分析解决方案基于 spring-cloud-stream 实现分区消费 消息挤压问题概述原因分析解决方案 MQ 消息顺序性保证 概述 a&#xff09;消息顺序性&#xff1a;消费者消费的消息的顺序 和 生产者发送消息的顺序是一致的. 例如 生产者 发送消息顺序…...

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 中&#xff0c;配置副本集以实现读写分离主要涉及以下几个步骤&#xff1a; 初始化副本集&#xff1a; 创建副本集时&#xff0c;需要在所有参与节点上运行 rs.initiate() 命令。这将初始化一个新的副本集。 添加成员到副本集&#xff1a; 使用 rs.add() 命令将所有…...

虚拟dom-Diff算法

虚拟dom-Diff算法 vue2 diff算法在vue2中就是patch&#xff0c;通过新旧虚拟dom对比&#xff0c;找到最小变化然后进行dom操作 在页面首次渲染的时候会调用一次patch并创建新的vnode&#xff0c;不会进行深层次的比较&#xff0c;然后再组件中数据发生变化的时候&#xff0c;…...

01创建型设计模式——单例模式

一、单例模式简介 单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff08;GoF书中解释创建型设计模式&#xff1a;一种用来处理对象的创建过程的模式&#xff09;&#xff0c;单例模式是其中的一种&#xff0c;它确保一个类只有一个实例&#xff…...

图像分割(一)

一、概述 语义分割&#xff1a;是把每个像素都打上标签&#xff08;这个像素点是人、树、背景等&#xff09; 实例分割&#xff1a;不光要区别类别&#xff0c;还要区分类别中的每一个个体 损失函数&#xff1a;逐像素的交叉熵&#xff1b;样本均衡问题 MIOU指标&#xff1a…...

C++ 新经典:设计模式 目录(先留框架,慢慢来~)

C 新经典&#xff1a;设计模式 C 新经典&#xff1a;设计模式 C 新经典&#xff1a;设计模式第1章 设计模式与软件开发思想、编程环境介绍第2章 模板方法模式第3章 工厂模式、原型模式、建造者模式第4章 策略模式第5章 观察者模式第6章 装饰模式第7章 单件模式第8章 外观模式第…...

go之命令行工具urfave-cli

一、urfave/cli urfave/cli 是一个声明性的、简单、快速且有趣的包&#xff0c;用于用 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》&#xff0c;作者是 Jurgen Aquilina、Peter Albert Xuereb、Emmanuel Francalanza、Jasmine Mallia …...

MySQL的脏读、不可重复读、幻读与隔离级别

脏读/不可重复读/幻读 脏读 脏读(Dirty Read)发生在一个事务读取了另一个事务尚未提交的数据。如果第二个事务失败并回滚&#xff0c;第一个事务读到的数据就是错误的。这意味着数据从一开始就是不稳定或者“脏”的。 举例 事务A读取了某条记录的值为X。事务B修改该记录的值…...

程序员前端开发者的AI绘画副业之路:在裁员危机中寻找新机遇

正文&#xff1a; 在这个充满变数的时代&#xff0c;作为一名前端开发者&#xff0c;我经历了行业的起伏&#xff0c;见证了裁员危机和中年失业危机的残酷。在这样的背景下&#xff0c;我开始了利用AI绘画作为副业的探索&#xff0c;不仅为了寻求经济上的稳定&#xff0c;更是为…...

Burp Suite的使用和文件上传漏洞靶场试验

第一步&#xff1a;分析如何利用漏洞&#xff0c;通过对代码的查阅发现&#xff0c;代码的逻辑是先上传后删除&#xff0c;意味着&#xff0c;我可以利用webshell.php文件在上传到删除之间的间隙&#xff0c;执行webshell.php的代码&#xff0c;给上级目录创建一个shell.php木马…...

如何在Ubuntu中安装deepin wine版的企业微信

如何在Ubuntu中安装deepin wine版的企业微信 运行如下一条命令将移植仓库添加到系统中 wget -O- https://deepin-wine.i-m.dev/setup.sh | sh自此以后&#xff0c;你可以像对待普通的软件包一样&#xff0c;使用apt-get系列命令进行各种应用安装、更新和卸载清理了。 安装企业…...

案例:Nginx + Tomcat集群(负载均衡 动静分离)

目录 案例 案例环境 案例步骤 部署Tomcat服务器 部署Nginx服务器 实现负载均衡和读写分离 日志控制 案例 案例环境 操作系统 IP 地址 角色 CentOS 192.168.10.101 Nginx服务器&#xff08;调度器&#xff09; CentOS 192.168.10.102 Tomcat服务器① CentOS 1…...

【密码学】密码协议的分类:②认证协议

密码协议的分类有很多种方式&#xff0c;这里我采取的是基于协议实现的目的来分类。可以将密码协议分成三类&#xff1a;认证协议、密钥建立协议、认证密钥建立协议。 一、认证协议是什么&#xff1f; 认证协议都在认证些什么东西呢&#xff1f;认证一般要认证三个东西&#x…...

异步编程(Promise详解)

目录 异步编程 回调函数 回调地狱 Promise 基本概念 Promise的特点 1.Promise是一种构造函数 2.Promise接收函数创建实例 3.Promise对象有三种状态 4.Promise状态转变不可逆 5.Promise 实例创建即执行 6.Promise可注册处理函数 7.Promise支持链式调用 Promise的静…...

DjangoORM注入分享

DjangoORM注入 简介 ​ 这篇文章中&#xff0c;分享一些关于django orm相关的技术积累和如果orm注入相关的安全问题讨论。 ​ 攻击效果同数据库注入 从Django-Orm开始 开发角度 ​ Django ORM&#xff08;Object-Relational Mapping&#xff09;是Django框架中用于处理数…...

【HBZ分享】Redis各种类型的数据结构应用场景

String(字符串类型) 计数器&#xff1a; incr / decr, 比如商品库存&#xff0c;业务号的发号器业务数据key-value缓存&#xff0c; 缓存结果数据&#xff0c;提高网站性能&#xff0c;缓解DB压力分布式session会话&#xff0c; 集群环境下存储token鉴权信息分布式锁&#xff…...

anaconda创建并且配置pytorch(完整版)

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 ** &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍** ❤️如遇文章付费&#xff0c;可先看看我公众号中是否发布免费文章❤️ &#x1f64f;笔者水平有限&#xff0c;欢迎各位大…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...