【Java】Spring的创建和使用

news2025/7/19 21:48:55

Spring的创建和使用

Spring就是一个包含众多工具方法的IOC容器。既然是容器,那么就具备两个最主要的功能:

  • 将对象存储到容器中
  • 从容器中将对象取出来

在Java语言当中对象也叫作Bean。

1. 创建Spring项目

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

1.1 创建一个Maven项目

1.2 添加Spring框架支持

在项目的pom.xml中添加Spring的框架支持,配置如下:

<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-context:spring 上下文还有spring-beans:管理对象的模块

如果配置失败的情况我们就要考虑是否使用国内源了。

那么如何配置国内源呢?

看图中圈起来的位置是否勾中,如果没有勾中。

打开目录看是否有后面名字为setting.xml的配置文件,如果没有就是没有配置国内源的。我们只需要将setting.xml文件复制到当前目录下,然后将后面的勾选,之后点击OK就配置好了。

注意的是需要配置这两个地方:

1.3 添加启动类

最后在创建好的项目java文件夹下创建一个启动类,包含main方法即可。

2. 存储Bean对象

存储Bean对象分为两步:

  1. 存储Bean对象之前,先得有Bean才行,因此要创建一个Bean
  2. 将创建的Bean注册到Spring当中

2.1 创建Bean

所谓的Bean就是Java语言的一个普通的对象,实现代码如下:

public class UserBean {
    public void sayHi(String name) {
        System.out.println("你好" + name);
    }
}

2.2 将Bean注册到容器中

在创建好的项目中添加Spring配置文件 spring-config.xml将此文件放到resources的根目录下,如下图:

配置文件的内容:

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

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

<bean id="userBan" class="org.example.UserBean"></bean>

PS: id可以不等于class里面的类名,但是要尽量符合规范。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xzlVMa6A-1677039880715)(null)]

3. 获取并使用Bean对象

获取并使用Bean对象,分为3步:

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

3.1 创建Spring上下文

在这里插入图片描述

除了使用上面那个类,我们还可以使用BeanFactory来作为Spring的上下文

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y2yguySO-1677039880701)(null)]

两个类的效果是一样的,ApplicationContext属于BeanFactory的子类,它们的区别如下:

  • 相同点:都可以从容器中获取Bean,都提供了getBean方法
  • 不同点:
    • 继承关系和功能方面来说:Spring容器有两个顶级的接口:BeanFactory和ApplicationContext。其中BeanFactory提供了基础的访问容器的能力,而ApplicationContext属于BeanFactory的子类,它除了继承BeanFactory的功能之外,还有独特的特性。还添加了对国际化支持、资源访问支持、以及事件传播等方面的支持
    • 从性能方面来说:ApplicationContext是一次性加载所有的Bean对象,而BeanFactory是需要那个加载那个,因此更加轻量

3.1.1 getBean方法的更多用法

getBean方法有很多种重载方法,我们也可以使用其他方法来获取Bean对象比如以下两种:

UserBean userBean = context.getBean(UserBean.class);

这种写法简单,但是容易出问题。当一个类型被注入到spring当中多次(多个)时候,就会报错,因为不清楚取出那个Bean

UserBean userBean1 = context.getBean("userBean", UserBean.class);

4. 总结

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

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

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

相关文章

Kotlin-面向对象

本片博客主要写创建对象&#xff0c;创建接口&#xff0c;创建抽象类&#xff0c;data关键字的作用 创建对象 如何声明一个对象&#xff0c;使用class关键字 格式为&#xff1a; class 对象名字(对象属性名&#xff1a;属性类型…)&#xff5b;&#xff5d; 如果对象没有函数…

python自学之《21天学通Python》(12)——第15章 线程和进程

现代操作系统大多都是多任务的&#xff0c;可以同时执行多个程序。进程是应用程序正在执行的实体&#xff0c;当程序执行时&#xff0c;也就创建了一个主线程。进程在创建和执行时需要一定的资源&#xff0c;比如内存、文件、I/O设备等。大多现代操作系统中支持多线程和进程。线…

JAVA服务端实现页面截屏(附代码)

JAVA服务端实现页面截屏适配需求方案一、使用JxBrowser使用步骤&#xff1a;方案二、JavaFX WebView使用步骤&#xff1a;方案三、Headless Chrome使用步骤&#xff1a;综上方案对比记录我的一个失败方案参考适配需求 有正确完整的地址url&#xff1b;通过浏览器能打开该url对…

Redis缓存一致性问题(缓存更新策略)

Redis缓存的一致性1. 缓存1.1 缓存的作用&#xff1a;1.2 缓存的成本&#xff1a;2. 缓存模型3. 缓存一致性问题3.1 引入3.2 解决(1) 先更新数据库&#xff0c;再手动删除缓存(2) 使用事务保证原子性(3) 以Redis中的TTL为兜底3.3 案例&#xff1a;商铺信息查询和更新(1) 查询商…

5.12 BGP选路原则综合实验

配置BGP的选路原则 1. 实验目的 熟悉BGP的选路的应用场景掌握BGP的选路的配置方法2. 实验拓扑 实验拓扑如图5-11所示: 图5-11:配置BGP的选路原则 3. 实验步骤 (1)配置IP地址 R1的配置

Spring中自定义Session管理,Spring Session源码解析

系列文章&#xff1a;Spring Boot学习大纲&#xff0c;可以留言自己想了解的技术点 目录 系列文章&#xff1a;Spring Boot学习大纲&#xff0c;可以留言自己想了解的技术点 1、session是什么&#xff1f; 1>session在哪里&#xff1f; 2>服务器怎么知道每次说话的是…

Python + Selenium,分分钟搭建 Web 自动化测试框架!

在程序员的世界中&#xff0c;一切重复性的工作&#xff0c;都应该通过程序自动执行。「自动化测试」就是一个最好的例子。 随着互联网应用开发周期越来越短&#xff0c;迭代速度越来越快&#xff0c;只会点点点&#xff0c;不懂开发的手工测试&#xff0c;已经无法满足如今的…

【Datawhale图机器学习】DeepWalk和Node2Vec

DeepWalk&#xff1a;用于图节点嵌入的在线机器学习算法 论文介绍 DeepWalk是基于随机游走的图节点嵌入算法。首次将深度学习和自然语言处理思想用于图机器学习&#xff0c;将随机游走序列与句子类比&#xff0c;节点与单词类比&#xff0c;构建Word2Vec的Skip-Gram无监督&am…

了解Axios及其运用方式

Axios简介 axios框架全称&#xff08;ajax – I/O – system&#xff09;&#xff1a; 基于promise用于浏览器和node.js的http客户端&#xff0c;因此可以使用Promise API 一、axios是干啥的 说到axios我们就不得不说下Ajax。在旧浏览器页面在向服务器请求数据时&#xff0c;…

计算机网络基础知识

目录 通信基础 前言 广播域与冲突域 计算机之间的连接方式 网线直连&#xff08;交叉线&#xff09; 同轴电缆 集线器 网桥 前言 举例&#xff08;计算机6向计算机7相互通信&#xff09; 交换机 交换机原理 路由器 路由器与其他设备区别&#xff1a; 注意&#…

Docker之路(3.docker底层原理、和虚拟机VM对比区别)

1.docker run 流程图 2. docker 底层原理 2.1 docker 是怎么工作的&#xff1f; Docker 是一个 Client-Server 结构的系统&#xff0c;Docker的守护进程运行在主机上&#xff0c; 通过Socket从客户端访问&#xff01; DockerServer接收到Docker-Client的指令&#xff0c;就会执…

【历史上的今天】2 月 22 日:Red Hat Enterprise Linux 问世;BASIC 语言作者出生;计算机协会创始人诞生

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 2 月 22 日&#xff0c;在 1857 年的今天&#xff0c;德国物理学家海因里希赫兹&#xff08;Heinrich Hertz&#xff09;出生。赫兹于 1887 年首先用实验证实了…

Mysql数据备份

一.数据备份的意义&#xff08;1&#xff09;保护数据的安全&#xff1b;&#xff08;2&#xff09;在出现意外的时候&#xff08;硬盘的损坏&#xff0c;断电&#xff0c;黑客的攻击&#xff09;&#xff0c;以便数据的恢复&#xff1b;&#xff08;3&#xff09;导出生产的数…

【音频处理和分析工具】上海道宁与NUGEN Audio助力您更轻松地提供高质量、合规的音频

NUGEN Audio的产品 可在任何情况下提供 先进的保真度和 不受限制的创造力 提供直接和直观的声音处理方式 NUGEN工具可以更轻松地 提供高质量、合规的音频 同时节省时间 降低成本并保留创作过程 开发商介绍 NUGEN Audio是后期制作、音乐和广播领域的知名品牌&#xff0c…

【Mysql】 锁

【Mysql】 锁 文章目录【Mysql】 锁1. 锁1.1 概述1.2 全局锁1.2.1 介绍1.2.2 语法1.2.2.1 加全局锁1.2.2.2 数据备份1.2.2.3 释放锁1.2.3 特点1.3 表级锁1.3.1 介绍1.3.2 表锁1.3.3 元数据锁1.3.4 意向锁1.4 行级锁1.4.1 介绍1.4.2 行锁1.4.3 间隙锁&临键锁1. 锁 1.1 概述…

一起学习用Verilog在FPGA上实现CNN----(八)integrationFC设计

1 integrationFC设计 LeNet-5网络结构全连接部分如图所示&#xff0c;该部分有2个全连接层&#xff0c;1个TanH激活层&#xff0c;1个SoftMax激活层&#xff1a; 图片来自附带的技术文档《Hardware Documentation》 integrationFC部分原理图&#xff0c;如图所示&#xff0c;…

python基于flask共享单车系统vue

可定制框架:ssm/Springboot/vue/python/PHP/小程序/安卓均可开发 目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究内容 2 2 系统开发环境 4 2. 3 系统分析 6 3.1系统可行性分析 6 3.1.1经济可行性 6 3.1.2技术可行性 6 3.1.3运行可行…

应用层协议

目录 应用层常见协议 DNS协议 前言 域名结构 DNS服务器分类 DNS的工作原理 DNS工作原理实例 DNS记录 DHCP协议 静态IP与动态IP DHCP协议好处 DHCP分配IP地址的4阶段 电子邮件 邮件的过程 电子邮件发送过程 pop协议特点 IMAP协议的特点 FTP协议 前言 FTP数据…

操作系统-初次理解

目录 1. 冯诺依曼体系 2. 操作系统 2.1 概念 2.2 解释 2.3 为什么管理 1. 冯诺依曼体系 我相信大家在学习计算机语言时一定听过这个体系结构的&#xff0c;那么这个结构到底是什么呢&#xff1f;上图&#xff1a; 该图是我对冯诺依曼体系结构简单构造&#xff0c;真实情况更…

Java实现多线程有几种方式(满分回答)

目录JDK8 创建的线程的两种方式orcle文档解释方式一&#xff1a;继承Thread类方式二&#xff1a;实现Runnable接口同时用两种的情况其他间接创建方式Callable接口线程池JDK8 创建的线程的两种方式 orcle文档解释 orcle文档&#xff1a;https://docs.oracle.com/javase/8/docs…