【Spring】创建和使用

news2025/1/11 21:06:09

目 录

  • 一.创建 Spring 项目
    • 1.1 创建⼀个 Maven 项目
    • 1.2 添加 Spring 框架依赖
    • 1.3 手动创建启动类
  • 二.将 Bean 对象存储到 Spring
    • 2.1创建Bean对象
    • 2.2将 Bean 存储到 Spring
  • 三.获取并使用 Bean 对象
    • 3.1 创建 Spring 上下文
    • 3.2 获取指定的 Bean 对象
    • 3.3 使用 Bean
  • 四.总结

经过前面的学习我们已经知道了,Spring 就是⼀个包含了众多工具方法的 IoC 容器。既然是容器那么它就具备两个最基本的功能:

  • 将对象存储到容器(Spring)中;
  • 从容器中将对象取出来。

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

一.创建 Spring 项目

接下来使用 Maven 方式来创建⼀个 Spring 项目,创建 Spring 项目和 Servlet 类似,总共分为以下 3步:

  1. 创建⼀个普通 Maven 项目。
  2. 添加 Spring 框架支持(spring-context、spring-beans)。
  3. 添加启动类。

1.1 创建⼀个 Maven 项目

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

1.2 添加 Spring 框架依赖

  • spring-context: spring 上下文。
  • spring-beans: spring 对象(bean)。

在这里插入图片描述

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

注意:

在这里插入图片描述

在这里插入图片描述

在这里面我们可以看到,除了 context 包和 bean 包还有其他的依赖,那些都是他们俩依赖的包

1.3 手动创建启动类

在这里插入图片描述


二.将 Bean 对象存储到 Spring

存储 Bean 分为以下 2 步:

  1. 存储 Bean 之前,先得有 Bean 才行,因此先要创建⼀个 Bean。
  2. 将创建的 Bean 注册到 Spring 容器中。

具体实现如下

2.1创建Bean对象

在这里插入图片描述

2.2将 Bean 存储到 Spring

并不是真的存储,而是告诉 Spring,此 Bean 需要托管给 Spring

在这里插入图片描述

在这里插入图片描述

Spring 配置文件的固定格式为以下内容(以下内容无需记忆,只需要保存到自己可以找到的地方就可以了,因为它是固定不变的):

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

接下来,再将 User 对象注册到 Spring 中就可以,具体操作是在 中添加如下配置:

在这里插入图片描述

id:标识,取对象 (bean)使用
class:存储 bean 位置 (包名+类名)

此处广义上来说,可以认为对象已经存储进去了,因为 Spring 是一个懒加载,启动的时候并不会立即执行


三.获取并使用 Bean 对象

获取并使⽤ Bean 对象,分为以下 3 步:

  1. 得到 Spring 上下文对象,因为对象都交给 Spring 管理了,所以获取对象要从 Spring 中获取,那么就得先得到 Spring 的上下文。
  2. 通过 Spring 上下文,获取某⼀个指定的 Bean 对象。
  3. 使用 Bean 对象。

3.1 创建 Spring 上下文

Spring 上下⽂对象可使⽤ ApplicationContext,实现代码如下:

在这里插入图片描述

除了 ApplicationContext 之外,我们还可以使用 BeanFactory 来作为 Spring 的上下⽂,如下代码所示:

在这里插入图片描述

ApplicationContext VS BeanFactory(常见面试题)

共同点:

  • 都是用来获取 Spring 上下文对象。

不同点:

    1. 继承关系和功能: ApplicationContext 属于 BeanFactory 子类,ApplicationContext 具备了 BeanFactory 所有的功能和能力。BeanFactory 只具备最基础访问 Bean 的能力。ApplicationContext 具备更多能力,比如国际化支持、资源访问支持等…
    1. 性能和加载方式: BeanFactory 按需加载,当需要使用 Bean 的时候再加载;ApplicationContext 一次性加载所有的 Bean。

3.2 获取指定的 Bean 对象

3.2.1根据名称(bean id)来获取 bean 对象

在这里插入图片描述

注意事项:此处的 bean id 要正确对应

在这里插入图片描述

3.2.2 根据一个 Class 参数获取 bean【根据类型来获取 bean 对象】

在这里插入图片描述

使用是需要注意一下,有可能出现异常(当同类型的对象被注册到 Spring 中多次时,此用法就会报错)

3.2.3 根据 String (bean id ) +Class 参数获取 bean
在这里插入图片描述

以上三种方法,第一种用到了类型强转,第二种当同类型的对象被注册多次就会报错,而第三种就结合了他们,比较常用


3.3 使用 Bean

在这里插入图片描述


四.总结

  1. 操作容器之前,先要有容器,所以先要得到容器。
  2. 存对象
    a. 创建 Bean(普通类)。
    b. 将 Bean 注册(配置)到 spring-confing.xml 中。
  3. 取对象
    a. 得到 Spring 上下文,并读取到 Spring 的配置⽂件。
    b. 获取某⼀个 Bean 对象。
    c. 使用 Bean 对象。

在这里插入图片描述

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

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

相关文章

Elasticsearch:创建自定义 ES Rally tracks 的分步指南

作者&#xff1a;Alejandro Snchez 按照这个综合教程学习如何制作个性化的 Rally tracks ES Rally 是什么&#xff1f;它的用途是什么&#xff1f; ES Rally 是一个用于在 Elasticsearch 上测试性能的工具&#xff0c;允许你运行和记录比较测试。 做出决策可能很困难&#x…

体感互动游戏定制开发:创新与技术的交融

体感互动游戏是一种结合体感技术和游戏娱乐的新型形式&#xff0c;为玩家提供了更加身临其境的游戏体验。而要开发一款成功的体感互动游戏&#xff0c;需要一支跨学科的团队&#xff0c;他们将创新与技术有机地结合&#xff0c;以满足用户的需求和期待。 首先&#xff0c;游戏…

钉钉小程序 没有调用该接口的权限

钉钉小程序 没有调用该接口的权限 problem 钉钉官方自带免登陆小程序 后端接口报错 {"errcode":60011,"errmsg":"没有调用该接口的权限&#xff0c;接口权限申请参考&#xff1a;https://open.dingtalk.com/document/orgapp-server/add-api-permiss…

Flutter插件开发指南02: 事件订阅 EventChannel

Flutter插件开发指南02: 事件订阅 EventChannel 视频 https://www.bilibili.com/video/BV1zj411d7k4/ 前言 上一节我们讲了 Channel 通道&#xff0c;但是如果你是卫星定位业务&#xff0c;原生端主动推消息给 Flutter 这时候就要用到 EventChannel 通道了。 本节会写一个 1~…

C++ 二维差分 二维前缀和逆运算 差分矩阵

输入一个 n 行 m 列的整数矩阵&#xff0c;再输入 q 个操作&#xff0c;每个操作包含五个整数 x1,y1,x2,y2,c &#xff0c;其中 (x1,y1) 和 (x2,y2) 表示一个子矩阵的左上角坐标和右下角坐标。 每个操作都要将选中的子矩阵中的每个元素的值加上 c 。 请你将进行完所有操作后的…

mfc140u.dll文丢失导致应用程序无法正常,有哪些解决办法

mfc140u.dll是Microsoft Foundation Classes&#xff08;MFC&#xff09;的一个重要组件&#xff0c;它提供了许多用于开发Windows应用程序的功能和工具。然而&#xff0c;当系统或应用程序升级、恶意软件感染或文件损坏以及用户错误操作等情况发生时&#xff0c;mfc140u.dll文…

力扣238和169

一&#xff1a;238. 除自身以外数组的乘积 1.1题目 1.2思路 1.3代码 //左右乘表 int* productExceptSelf(int* nums, int numsSize, int* returnSize) {int* answer (int*)malloc(numsSize*sizeof(int));int i 0;int left[numsSize],right[numsSize];left[0] 1;for(i 1;…

打码半年,开源一款自定义大屏设计软件!

hi&#xff0c;大家好&#xff0c;我是Tduck马马。 最近我们开源了一款大屏软件-TReport&#xff0c;与大家分享。 TReport是一款基于Vue3技术栈的数据可视化系统&#xff0c;支持静态、动态api等数据源&#xff1b;可用于数据可视化分析、报表分析、海报设计使用。 提供自定…

☀️将大华摄像头画面接入Unity 【1】配置硬件和初始化摄像头

一、硬件准备 目前的设想是后期采用网口供电的形式把画面传出来&#xff0c;所以这边我除了大华摄像头还准备了POE供电交换机&#xff0c;为了方便索性都用大华的了&#xff0c;然后全都连接电脑主机即可。 二、软件准备 这边初始化摄像头需要用到大华的Configtool软件&#…

哈希(哈希散列数据结构)---底层原理

Day02: 1.哈希散列数据结构&#xff1a;底层实现就是&#xff1a;数组链表&#xff08;红黑树&#xff09; map的put方法和get方法。 2.数组方法和链表存取数据的区别 数组方法&#xff1a;法随机访问快 链表&#xff1a;增删改效率快。 3.哈希结合了链表和数组的特性。 …

Sora后观察:AI大模型产业落地的八个锚点

在正在进行的2024年&#xff0c;国内大模型也将更下沉和落地&#xff0c;在技术上的突破之外&#xff0c;也会出现更多的向下的产业兼容和产业实践案例&#xff0c;作为新质生产力推动产业数字化转型的航船加速前进。 作者|斗斗 编辑|皮爷 出品|产业家 “电影讲述了一名…

关于深度学习和大模型的基础认知

这年头&#xff0c;作为一个技术人&#xff0c;话头里没有“大模型”&#xff0c;和人聊天都聊不下去。为了让自己和大家能更好的参与话头&#xff0c;特撰写此文&#xff0c;提供一些对大模型的基础认知能力&#xff08;门外汉&#xff0c;浅尝辄止&#xff09;。旨在解自己的…

音乐与步伐同行:南卡、韶音和墨觉的骨传导耳机深度评测

在快节奏的现代生活中&#xff0c;音乐成为了许多人精神慰藉的方式之一。特别是对于那些热爱运动的人来说&#xff0c;音乐不仅是他们运动过程中的最佳伴侣&#xff0c;更是激发潜力&#xff0c;突破极限的源动力。但是在运动的过程中如何享受到最佳的音乐体验呢&#xff1f;这…

【wu-lazy-cloud-network】Java自动化内网穿透架构整理

项目介绍 wu-lazy-cloud-network 是一款基于&#xff08;wu-framework-parent&#xff09;孵化出的项目&#xff0c;内部使用Lazy ORM操作数据库&#xff0c;主要功能是网络穿透&#xff0c;对于没有公网IP的服务进行公网IP映射 使用环境JDK17 Spring Boot 3.0.2 版本更新 1…

【快速搞定Webpack4】介绍及基本使用(一)

webpack 是一个静态资源打包工具。 他会以一个或多个文件作为打包的入口&#xff0c;将我们整个项目所有文件编译组合成一个或多个文件输出出去。 输出的文件就是编译好的文件&#xff0c;就可以在浏览器端运行了。 我们将 webpack 输出的文件叫做 bundle 。 (将浏览器不识别的…

第十三章[管理]:13.3:pycharm的常用设置

一,pycharm配置注释模板 1,打开配置界面: pycharm->preference 英文:Editor->File and Code Templates->Python Script 中文:编辑器->文件和代码模板->Python Script 如图: 我们输入的内容: # @Project : ${PROJECT_NAME} # @File : ${NAME}.py # @Author …

notepad++的下载与使用

1.进入官网下载 https://notepad-plus-plus.org/ 点击下载即可 2.选择中文简体 3.建议安装在D盘 其余步骤按照指示就行 4.安装后这几个是必选的 设置完成后就可以写中文了 以此为例 结果为

HarmonyOS(二十)——管理应用拥有的状态之LocalStorage(页面级UI状态存储)

LocalStorage是页面级的UI状态存储&#xff0c;通过Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage也可以在UIAbility实例内&#xff0c;在页面间共享状态。 本文仅介绍LocalStorage使用场景和相关的装饰器&#xff1a;LocalStorageProp和LocalS…

k8s除了可以直接运行docker镜像之外,还可以运行什么? springboot项目打包成的压缩包可以直接运行在docker容器中吗?

Kubernetes&#xff08;k8s&#xff09;主要设计用于自动部署、扩展和管理容器化应用程序。虽然它与Docker容器最为密切相关&#xff0c;Kubernetes实际上是与容器运行时技术无关的&#xff0c;这意味着它不仅仅能够管理Docker容器。Kubernetes支持多种容器运行时&#xff0c;包…