Spring之最基础的创建与Bean的存储与获取(还有Maven加载jar包报错的解决方法)

news2024/9/21 20:34:24

目录

创建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中获得了对象后,我们就可以运用了,操作对象中的属性或方法等。

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

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

相关文章

【TiDB】08-离线部署TiDB 8.1

目录 1、环境检查 1.1、检测及关闭系统 swap 1.2、设置TiDB节点的临时空间 1.3、安装NTP服务 1.3.1、更新apt源 1.3.2、安装NTP 1.3.3、将本机作为NTP服务器 1.3.4、客户端连接 1.4、配置SSH互信及sudo免密码 2、离线安装 2.1、下载离线安装包 2.2、解压安装 2.3、…

YOLOv8改进 | 主干网络 | 动态调整目标的感受野的LSKNet【旋转目标检测SOTA】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

程序员最常用的操作——git

软件安装 官方下载&#xff08;比较慢&#xff09;&#xff1a;https://git-scm.com/downloads gitee 注册账号 https://gitee.com/ 新建仓库 honey2024 先全局配置下邮箱 配置 git config --global user.email “your_emailexample.com” git config --global user.name…

虚幻5|AI行为树,进阶篇

一&#xff0c;打开敌人的角色蓝图&#xff0c;编写以下蓝图&#xff0c;该蓝图只是创建一个敌人并非ai行为树 1.编写蓝图 2.打开主界面&#xff0c;创建一个导航网格体积&#xff0c;上一章都有讲&#xff0c;在添加体积这里面&#xff0c;找到导航网格体积&#xff0c;点击创…

安装buf工具和环境变量

安装buf工具和环境变量 下载buf的可执行文件&#xff1a; 访问buf官方的GitHub releases页面。 没梯子的就用csdn下载吧 https://download.csdn.net/download/qq_27229113/89638643 找到最新版本的buf。 在Assets部分&#xff0c;下载适合Windows的二进制文件&#xff0c;一…

如何利用宝塔给WordPress网站搬家?详细分步教程

对于使用WordPress建站的站长来说&#xff0c;网站搬家是一项必备技能。无论是重装系统、升级配置还是服务器迁移&#xff0c;掌握网站搬家的技巧可以让你在选择服务器时更加灵活。本文将详细介绍如何使用宝塔面板来搬迁WordPress网站。 1. 备份数据库 记住数据库用户名和密码…

Python 批量读取西门子PLC

需要安装 pip install python-snap7 import snap7 from snap7.util import * import struct # PLC的IP地址, Rack和Slot plc snap7.client.Client() plc.connect(127.0.0.1, 0, 1) # IP, Rack, Slot # 读取DB1中的10个字节&#xff0c;起始于0位置 db_number …

企业多样化需求一键满足:可道云teamOS,助力定制专属企业网盘

在这个飞速发展的数字化时代&#xff0c;企业的运营需求越来越多样化&#xff0c;如何高效地管理数据、实现安全协作&#xff0c;成为摆在我们面前的重要课题。 幸运的是&#xff0c;我遇到了可道云teamOS。 首先&#xff0c;可道云teamOS的自定义用户权限功能让我印象深刻。…

Bug定义及生命周期(七)

BUG 定义 软件的bug&#xff0c;软件程序的漏洞或缺陷 – 常见&#xff0c;首先发现 软件可改进的细节&#xff0c;或与需求文档存在差异的功能实现等 测试工程师&#xff1a;发现bug&#xff0c;定位bug&#xff0c;提交bug&#xff0c;回归bug 类型 确定bug类型&#xff…

Android-->产物收集(含apk文件重命名, aab文件重命名)

以前写过修改apk生成路径和文件名的文章, 如下: AS–›Gradle 7.0.0/4.1.0/4.0/3.3/3.0 修改APK生成路径和文件名(附AAR修改方式以及分析过程)_com.android.build.gradle.internal.api.libraryvaria-CSDN博客 这种方法入侵了gradle,破坏了原有的gradle环境, 经常会导致如下问…

2024年8月中国数据库排行榜:OceanBase攀升再夺冠,达梦跃入三甲关

在这个炽热的季节&#xff0c;随着巴黎奥运会的盛大开幕&#xff0c;全球将目光聚集在了体育的无限魅力和竞技的巅峰对决上。如同奥运赛场上的激烈角逐&#xff0c;中国数据库界也上演着一场技术与创新的较量&#xff0c;各个数据库产品正在中国乃至全球舞台上展示着它们的实力…

mitmproxy 抓包工具的使用

motmproxy 是一个支持 HTTP/HTTPS 协议的抓包程序&#xff0c; 和 Fiddler, Charles 有些类似的功能&#xff0c;只不过它以控制台的形式操作 mitmproxy 还有两个关联组件。 一个是 mitmdump &#xff0c; 这是 mitmproxy 的命令接口&#xff0c; 利用它我们可以对接 Python …

企业用的文件加密软件有哪些?2024年最好用的十款文件加密软件

随着数字化转型的深入&#xff0c;企业数据安全成为了一个日益重要的议题。文件作为企业日常运营和知识管理的核心载体&#xff0c;其安全性直接关系到企业的商业机密和知识产权保护。为了应对日益严峻的数据安全挑战&#xff0c;市场上出现了多款功能强大、操作简便的文件加密…

从0开始搭建vue + flask 旅游景点数据分析系统(十):Element-UI消息插件封装

上一期我们使用过了elementui的Message来弹出消息提示框&#xff0c;但是上期的写法每次都要在vue文件中引入Message&#xff0c;并且要写不少重复代码&#xff0c;这一期就以插件方式将message封装到Vue的实例中。 创建plugins/message.js 这边加了判断的作用是&#xff0c;…

备忘录内容可以隐藏内容吗 备忘录内容在哪隐藏

在现代忙碌的生活中&#xff0c;备忘录成为了我们不可或缺的助手。它帮助我们记录重要的事项、想法和灵感&#xff0c;确保我们不会错过任何关键信息。然而&#xff0c;随着备忘录里积累的内容越来越多&#xff0c;很多人开始担心这些私密信息的安全。毕竟&#xff0c;如果备忘…

光影漫游者:品牌推广与产品发布的理想展示空间—轻空间

在竞争日益激烈的市场环境中&#xff0c;品牌推广和产品发布会不仅要传递信息&#xff0c;更要留下深刻印象。而光影漫游者作为创新展示空间的典范&#xff0c;以其现代感十足的外观设计与高科技内饰配置&#xff0c;为企业提供了一个完美的展示平台&#xff0c;最大限度地吸引…

Steinberg SpectraLayers Pro for Mac:专业音频频谱编辑的巅峰之作

Steinberg SpectraLayers Pro for Mac是一款专为音频专业人士设计的专业音频频谱编辑器&#xff0c;它以其强大的频谱编辑功能和直观的操作界面&#xff0c;在音频处理领域树立了新的标杆。该软件不仅为音频编辑工作带来了前所未有的精确度和灵活性&#xff0c;还极大地提升了音…

map/set和unordered_map/unordered_set的区别及使用情况

map/set和unordered_map/unordered_set的区别 容器底层数据结构是否有序实现版本复杂度迭代器map/set红黑树有序C98O(logN&#xff09;双向迭代器unordered_map/unordered_set哈希表/散列表无序C11O(1)单向迭代器 unordered_set无序的&#xff08;VS下&#xff09; void uno…

文件长度超出芯片容量, 超出部份将被忽略!ch341a编程器报错解决方法

出现这个错误提示&#xff0c;说明你正在刷的是华硕主板的cap格式BIOS文件。 编程器不支持这种文件&#xff0c;需要转换成编程器专用版本BIOS文件。 华硕cap格式BIOS转编程器bios文件&#xff0c;转换工具下载地址&#xff1a;https://download.csdn.net/download/baiseled/88…

CentOS 7设置静态IP地址的详细指南

CentOS 7设置静态IP地址的详细指南 配置静态IP地址是服务器或虚拟机管理的重要步骤之一&#xff0c;特别是在需要稳定、可预测的网络环境时。本文将详细介绍如何在CentOS 7上设置静态IP地址&#xff0c;帮助确保你的系统网络配置符合需求。 1. 查看当前网络配置 在进行任何更…