【Java】Spring——创建Spring + 对Spring的存储 /读取对象操作

文章目录

  • 前言
  • 一、创建Spring项目
  • 二、向Spring容器中存储 Bean 对象
  • 三、从Spring容器中读取 Bean 对象
    • 得到Spring上下文对象
    • 得到 Bean 对象
  • 总结


前言

本人是一个普通程序猿!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果你也对编程感兴趣的话,互关一下,以后互相学习,共同进步。这篇文章能够帮助到你的话,劳请大家点赞转发支持一下!


一、创建Spring项目

创建Spring也很简单,分为三步。

1️⃣ 创建一个普通的Maven项目。 在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2️⃣ 添加Spring框架支持 :在项目的 pom.xml 中添加 Spring 框架的支持(添加Spring 框架支持的代码在下面!)。
在这里插入图片描述

注意:代码中的 Spring的版本号要与JDK的版本号对应 (JDK1.8就是JDK8,具体请看下面官方说明与大佬博客)。

JDK版本号对应的Spring版本号

一文彻底搞懂令人疑惑的Java和JDK的版本命名!

<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>

第一次引入Spring框架支持的时候会下载jar包,如果下载缓慢或下载失败,可以配置国内源,具体如何配置还请大家问下度娘。

3️⃣ 添加启动类

最后在创建好的项目 java ⽂件夹下创建⼀个启动类,包含 main 方法即可。在这里插入图片描述


在 Java 语言中对象也叫做 Bean ,所以再遇到对象就以 Bean 著称。

二、向Spring容器中存储 Bean 对象

也是分为简简单单的三步。

1️⃣要存储Bean,得先有Bean才行啊,现在我们创建两个Bean,Student与Teacher。

在这里插入图片描述
在这里插入图片描述
要注意Teacher是在test包下, Student是在demo包下。

2️⃣创建配置文件
resources 目录下 ,创建 Spring 配置文件:xxx.xml(名称没有限制, 一定要是xml格式 )在这里插入图片描述
配置文件的代码放在下面了!!

<?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/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
</beans>

3️⃣将Bean注册到Spring容器
在配置文件中注册。在这里插入图片描述

注意:是放在beans标签下。

<bean id="" class=""></bean>

上述操作就将Student与Teacher对象注册到了Spring容器中。


三、从Spring容器中读取 Bean 对象

分为简简单单的两步。
1️⃣ 得到 Spring 上下文对象。
2️⃣ 通过 Spring 上下文,获取某⼀个指定的 Bean 对象

以下操作均在启动类(App)中完成。

得到Spring上下文对象

1️⃣得到 Spring 上下文对象(相当于得到容器这个对象),因为对象都交给 Spring 管理了,所以获取对象要从 Spring中获取,那么就得先得到 Spring 的上下文。共有两种方式获得Spring的上下文对象。

第一种
在这里插入图片描述

第二种
在这里插入图片描述

两种得到 Spring 上下文对象的方式的区别:
不同:

ApplicationContext 属于 BeanFactory 的子类,ApplicationContext 拥有更多功能 (国际化支持资源访问支持、以及事件传播等方面的支持…)。

BeanFactory启动非常快,启动后获取对象慢。
ApplicationContext启动慢,启动后获取对象非常快。


加载 Bean 机制不同:
BeanFactory 懒加载(懒汉),按需加载(使用一个Bean加载一个Bean)。ApplicationContext(饿汉) 一次性加载所有 Bean 对象。



相同:
都是容器管理对象,都可以获取 Bean 对象。

得到 Bean 对象

2️⃣通过 Spring 上下文,获取某⼀个指定的 Bean 对象。

有三种获取Bean对象的方式。

第一种:根据名字获取 在这里插入图片描述
在这里插入图片描述
只有根据名字获得Bean对象时,返回的是Object类型的对象,需要强转,下面两种方法都声明了类型不需要强转。

第二种:根据类型获取

在这里插入图片描述
在这里插入图片描述

但是这里有一个问题,当容器中多个同一类型的对象,会怎么样? 在这里插入图片描述
在这里插入图片描述
代码不变,程序抛出异常! 在这里插入图片描述

当容器中存在两个相同类型的对象,使用类型获取该对象就会抛出异常

所以使用类型获取对象的方法,使用时要小心!!!

第三种:根据名字+类型获取
此时容器中仍然存在两个相同类型的对象,不过这里就没有任何问题了。 在这里插入图片描述
在这里插入图片描述


总结

以上就是今天要讲的内容,本文介绍了如何创建Spring以及对Spring的存储取出对象操作。
但是以上的存储取出对象操作,还要去配置文件里专门写代码去配置,然后还要通过上下文对象进行获取,这不也挺麻烦吗,还不如直接new好使呢。

下篇文章介绍通过注解实现更简单的Spring存储取出操作,敬请期待!

路漫漫不止修身,也养性。

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

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

相关文章

英语翻译日语翻译待遇哪个好

如今&#xff0c;随着世界联系越来越紧密&#xff0c;市场上对于翻译业务的需求也越来越大。那么&#xff0c;针对比较热门的英语翻译与日语翻译&#xff0c;哪个语言翻译待遇好&#xff1f; 我们知道&#xff0c;英语作为全球使用频率最高的语言&#xff0c;业务量大市场需求大…

【用户体验分析报告】 按需加载组件,导致组件渲染卡顿,影响交互体验?组件拆包预加载方案来了!

首先&#xff0c;我们看一些针对《如何提升应用首屏加载体验》的文章&#xff0c;提到的必不可少的措施&#xff0c;便是减少首屏幕加载资源的大小&#xff0c;而减少资源大小必然会想到按需加载措施。本文提到的便是一个基于webpack 插件与 react 组件实现的一套研发高度自定义…

云原生落地实践的25个步骤

一、什么是云原生&#xff1f; 云原生从字面意思上来看可以分成云和原生两个部分。 云是和本地相对的&#xff0c;传统的应用必须跑在本地服务器上&#xff0c;现在流行的应用都跑在云端&#xff0c;云包含了IaaS,、PaaS和SaaS。 原生就是土生土长的意思&#xff0c;我们在开始…

Swagger之Hello World !

目录 ■1&#xff0e;前言・Swagger介绍 ■2&#xff0e;例子&#xff0c;如果基于Spring Boot项目&#xff0c;实现Swagger---非常简单 2&#xff0e;1&#xff0e;已有的SpringBoot项目 2&#xff0e;2&#xff0e;修改POM文件 2&#xff0e;3&#xff0e;添加Config文件…

DAY01_Spring简介IOC、DI入门案例Bean基础配置Bean实例化Bean生命周期依赖注入(DI配置)

目录 一 Spring1 Spring简介1.1 为什么要学1.2 学什么1.3 怎么学 2 初识Spring2.1 Spring家族2.2 Spring发展史 3 Spring体系结构问题导入3.1 Spring Framework系统架构图3.2 Spring Framework课程学习路线 4 Spring核心概念问题导入4.1 目前我们代码存在的问题4.2 核心概念 二…

分冶算法 剑指 07 重建二叉树 排序算法:剑指45 把数组排成最小的数 10-I 斐波那契数列

来记录几个注意事项 1.vector容器里利用find&#xff08;&#xff09;函数 不同于map&#xff08;map有find方法&#xff09;&#xff0c;vector本身是没有find这一方法&#xff0c;其find是依靠algorithm来实现的。 所以要包含头文件 #include <iostream> #include <…

奔驰CAN FD嵌入式控制器开发硬件设计及应用趋势

CAN FD作为一种性能可靠、功能完善、成本合理的远程网络通信控制方式&#xff0c;集成CAN/CAN FD控制器的MCU、核心板、工控板及物联网解决方案已经被广泛应用到各个控制系统中&#xff0c;例如汽车电子、自动控制、智能大厦、电力系统、能源物流、智慧改装等各个领域。 中国经…

windows编译新版本linphone

目录​​​​​​​ 环境 获取源码(使用5.0.0版本5.3.0-alpha有问题编译不过) 编译环境准备 编译&#xff08;使用ninja&#xff09; 编译&#xff08;不适用使用ninja&#xff09; 报错解决 linphone-desktop是一款基于SIP的标准开源网络电话系统&#xff0c;它使用了Qt…

计算机视觉(五)深度学习基础

文章目录 深度学习基础卷积神经网络与传统神经网络区别深度学习与神经网络的区别 目标函数选择合适的目标函数Softmax层 改进的梯度下降梯度消失的直观解释激活函数学习步长SGD的问题Momentum动量Nesterov MomentumAdagradRMSpropAdam 各种梯度下降算法比较关于算法选择的建议B…

Adobe Camera Raw 常用快捷键

戳下方链接&#xff0c;后台回复“230707PS插件”获取相关插件应用 回复“230708PS插件教程”获取教学链接; 回复“230730camera快捷键”获取快捷键链接。 原文链接&#xff1a;https://mp.weixin.qq.com/s/tVNDBPUtKrUtfGmPKJ0Tdw 目标调整工具 作用WindowsmacOS选取目标调整工…

【Python】Web学习笔记_flask(1)——模拟登录

安装flask pip3 install flask 第一部分内容&#xff1a; 1、主页面输出hello world 2、根据不同用户名参数输出用户信息 3、模拟登录 from flask import Flask,url_for,redirectappFlask(__name__)app.route(/) def index():return hello worldapp.route(/user/<uname…

python爬虫(三)_HTTP的请求和响应

HTTP和HTTPS HTTP(HyperText Transfer Protocol&#xff0c;超文本传输协议)&#xff1a;是一种发布和接收HTML页面的方法 HTTPS(HyperText Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版&#xff0c;在HTTP下加入SSL层。 SSL(Secure Socket Layer安全套…

Windows 环境Kubernetes安装

目录 前言 安装 Docker 安装 Kubernetes Windows 安装 kubectl 介绍 安装 开启 Kubernetes 前言 Docker作为当前最流行的容器化平台&#xff0c;为Kubernetes提供了强大的容器化技术基础。Kubernetes与Docker的结合&#xff0c;使得容器化应用程序在大规模集群中得以简…

计算机视觉实验:图像处理综合-路沿检测

目录 实验步骤与过程 1. 路沿检测方法设计 2. 路沿检测方法实现 2.1 视频图像提取 2.2 图像预处理 2.3 兴趣区域提取 2.4 边缘检测 ​​​​​​​2.5 Hough变换 ​​​​​​​2.6 线条过滤与图像输出 3. 路沿检测结果展示 4. 其他路沿检测方法 实验结论或体会 实…

Linux CentOS 8 编译安装Apache Subversion

前言 距离上一篇发表已经过去了5年零2个多月&#xff0c;这次重新开始写技术博客&#xff0c;理由和原来一样&#xff0c;也就是想把自己学习和工作中遇到的问题和知识记录下来&#xff0c;今天记录一下Linux CentOS 8通过编译安装svn的过程。 下载SVN 下载地址&#xff1a;…

内存分析工具之Mat

自定义类MatClazz内存个数为9521。当前对象占用内存为16个字节。不包括其属性bytes的字节数。 通过查看MatClazz引用的类之byte数组之bytes。其单个数组占用的字节数为10256。整个内存MatClazz中属性bytes占用的byte[]字节数为97746376&#xff0c;与直方图统计趋近。 通过选…

基于YOLOv8开发构建蝴蝶目标检测识别系统

在前面的一篇博文中已经很详细地描述了如何基于YOLOv8开发构建自己的个性化目标检测模型&#xff0c;感兴趣的话可以看下&#xff1a; 《基于YOLOv8开发构建目标检测模型超详细教程【以焊缝质量检测数据场景为例】》 本文的主要目的就是基于YOLOv8来开发构建细粒度的蝴蝶目标…

MD-MTSP:斑马优化算法ZOA求解多仓库多旅行商问题MATLAB(可更改数据集,旅行商的数量和起点)

一、斑马优化算法ZOA 斑马优化算法&#xff08;Zebra Optimization Algorithm&#xff0c;ZOA&#xff09;Eva Trojovsk等人于2022年提出&#xff0c;其模拟斑马的觅食和对捕食者攻击的防御行为。斑马优化算法&#xff08;Zebra Optimization Algorithm&#xff0c;ZOA&#x…

高等数学教材啃书汇总难点(一)函数与极限

教材为理工科标配的同济大学第七版&#xff0c;本系列为一轮啃书&#xff0c;将必会的全部重难点悉数总结——尤其是各种晦涩的理论证明部分&#xff0c;考研数学一的选手&#xff0c;想冲击高分的话必须掌握。对于考研证明题部分&#xff0c;熟练掌握定义是必不可少的底层基础…

网络是怎样连接的

文章目录 概述英语缩略语一、Web浏览器二、协议栈、网卡三、集线器、交换机、路由器四、接入网、网络运营商五、防火墙、缓存服务器六、Web服务器总结 概述 从在浏览器中输入网址&#xff0c;到屏幕上显示出网页的内容&#xff0c;在这个只有几秒钟的过程中&#xff0c;很多硬…