Spring初识(二)

news2024/11/23 18:18:54

前言

经过前面的学习,我们已经知道spring就是包含了众多方法的Ioc,那么既然是容器,就具备两个功能,我们接下来就是要介绍以下两个功能:
1.将对象存储到容器(spring)中:
2.从容器(spring)中将对象取出来.
这两个功能就应发出来,spring的创建和使用.

一.Spring创建

我们先来说一些大方向的一个步骤:
创建spring
1.创建一个maven项目
2.增加Spring的框架支持.
3.增加一个启动类(作用:为后面从spring容器获取bean 做准备)
现在具体就开始细节的操作了.

1.1创建一个maven项目在这里插入图片描述

点击下一步之后.
在这里插入图片描述

1.2 增加Spring依赖

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.23</version>
    </dependency>

</dependencies>

1.3 增加启动类

所谓启动类,就是在java文件目录下建立一个启动类.

public class Application {
    public static void main(String[] args) {
     
    }
}

二.存储Bean对象

具体步骤如下:
1.先创建Bean对象.
2.将创造的bean通过spring配置文件(spring-config.xml)注册到容器当中.

2.1 创建Bean

何为Bean,Bean就是Java语言中的一个普通对象,
具体代码入下:

public class Student {
    public Student(){
        System.out.println("do student init");
    }
    public void sayHi(){
        System.out.println("hi student");
    }
}

2.2 将Bean对象注册到容器当中

spring-config.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>

下面做的操作就是把bean对象注册到Spring容器当中.

<bean id="student" class="com.spring.demo.Student"></bean>

三.读取Bean对象

这一步就是从容器中把东西取出来.
1.得到spring对象(两种方式ApplicationContext、BeanFactory)
2.通过spring对象getBean 方法获取到Bean对象

3.1 得到spring上下文对象.

这里创建上下文对象其实有两种方式.
Spring 上下⽂对象可使⽤ ApplicationContext,实现代码如下:

 ApplicationContext context=new 
 ClassPathXmlApplicationContext("spring-config.xml");

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

  BeanFactory beanFactory=new XmlBeanFactory(new ClassPathResource("spring-config.xml"));

当然这两者有什么区别呢?
大家先来看使用上的区别.
在这里插入图片描述
最后来个简单的总结,这也是常见的面试题:

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

3.2 通过上下文对象,获取某一个指定的Bean对象

这里获取到Bean对象也有三种方式
1.通过名称获取.

      Student student=(Student)context.getBean("student");

2.通过类型方式获取.

 Student student=(Student)context.getBean(Student.class);

3.通过名称+类型方式获取.

        Student student=(Student)context.getBean("student",Student.class);

3.3 使用Bean对象

public class Application {
    public static void main(String[] args) {
        ApplicationContext context=new
                ClassPathXmlApplicationContext("spring-config.xml");
        Student student=(Student)context.getBean("student",Student.class);
        student.sayHi();
    }
}

总结

  1. 操作容器之前,先要有容器,所以先要得到容器。

  2. 存对象
    a.创建Bean(普通类)。
    b.将 Bean注册(配置)到spring-confing.xml中。

  3. 取对象
    a.得到Spring 上下文,并读取到Spring的配置文件。b.获取某一个 Bean对象。
    c.使用Bean对象。

具体的流程图如下:
在这里插入图片描述

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

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

相关文章

web浏览器在线预览Excel,PDF,world文档解决方案

众所周知啊&#xff0c;在web浏览器中是无法直接预览Excel、world文档等文件的&#xff0c;PDF有的浏览器是打开预览&#xff0c;有的浏览器是跳转到下载页&#xff0c;行为不一致也是让开发者头疼的事情。 今天给大家提供一个解决方案&#xff0c;实现office文件在线预览的解…

vue3中使用Vue.Draggable的clone模式及遇到的坑

最近有个需求是从左边一个列表中&#xff0c;拖动列表元素到右边列表中&#xff0c;并且不是移动拖拽&#xff0c;而是复制拖拽&#xff0c;元素在右边列表中可以重复&#xff0c;比如左边是参加某个游戏的队员名单&#xff0c;右边是出场顺序&#xff0c;队员可以重复上场。类…

网络运维工作是什么的?

互联网运维工作&#xff0c;以服务为中心&#xff0c;以稳定、安全、高效为三个基本点&#xff0c;确保公司的互联网业务能够 724 小时为用户提供高质量的服务。 运维人员对公司互联网业务所依赖的基础设施、基础服务、线上业务进行稳定性加强&#xff0c;进行日常巡检发现服务…

【数学建模】数据预处理

在数学建模赛题中&#xff0c;官方给所有选手的数据可能受到主观或客观条件的影响有一定的问题&#xff0c;如果不进行数据的处理而直接使用的话可能对最终的结果造成一定的影响&#xff0c;因此为了保证数据的真实性和建模结果的可靠性&#xff0c;需要在建模之前对数据进行相…

VS工程项目中属性中无Qt设置问题解决方案

VS工程项目中属性中无Qt设置问题解决方案 若VS工程中&#xff0c;创建的是Qt工程&#xff0c;或者从Qt Creator工程转换为VS 工程时&#xff0c;VS项目属性中确无Qt Project Setttings等设置时&#xff0c;可通过如下方案解决 1. 右键项目&#xff0c;在下拉框中选择Qt项 2.…

微信号长时间不用会被腾讯回收

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 估计很多人不知道的一个冷知识&#xff1a;你的微信号并不归你本人所有&#xff0c;你只有账号的使用权&#xff0c;微信账号的所有权归腾讯公司所有。如果长期不使用&#xff0c;或者是违规&#…

MySQL—创建和管理表(六)

1.数据库相关操作 -- 1 创建数据库 -- 1.1 创建一个保存员工信息的数据库 CREATE DATABASE employees; -- 1.2 其他相关指令 -- 1.2.1 查看当前所有数据库 SHOW DATABASES; -- 1.2.2 “使用”一个数据库&#xff0c;使其作为当前数据库 USE employees;-- 2 命名规则 -- 见ppt …

虹科分享 | MACsec-先进的车载网络安全解决方案

Media Access Control Security&#xff08;简称 MACsec&#xff09;是以太网上最先进的安全解决方案。它为以太网上传输的几乎所有帧提供完整性保护、重放保护和可选的机密性保护。与其他解决方案相比&#xff0c;包括了单播、组播和广播消息以及在第2层上运行的所有协议。 M…

3D虚拟展厅和VR全景展厅该如何选择

导言&#xff1a; 在当今数字化时代&#xff0c;传统展厅已逐渐演变为3D虚拟展厅和VR全景展厅。这些技术的广泛应用为企业带来了全新的营销和展示方式。 一&#xff0e;3D虚拟展厅的特点和优势 3D虚拟展厅是一种基于3D技术的虚拟展示空间&#xff0c;通过计算机图像和模拟技术…

【C语言进阶(九)】常见内存错误以及柔性数组

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C语言学习分享⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多C语言知识   &#x1f51d;&#x1f51d; 常见内存错误 1. 前言2. 对NULL指针…

伦敦银价格一览表

一目均衡表&#xff08;Ichimoku Kinko Hyo&#xff09;是日本在二次大战前发明的行情分析方法&#xff0c;是全世界技术分析的鼻祖&#xff0c;其功能是提供市场的方向及入市位&#xff0c;被广泛应用于股市、债市和贵金属市场之中。日文KINKO的意思为时空平衡点&#xff0c;H…

Blueprint —— 入门笔记2

BP_Character Animation BlueprintBlend Space 1D 角色按键动画 命令slomo 0.1减慢时间&#xff0c;用于测试&#xff1b; 玩家输入&#xff1a;位移、旋转、缩放&#xff1b; 碰撞检测&#xff1a;执行动作等&#xff1b; 游戏开始 地图&#xff0c;开始游戏页面 打开地图 输入…

用于视觉跟踪的在线特征选择研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

如何在Appium中使用AI定位

当我们在写自动化测试脚本的时候&#xff0c;传统情况下一定要知道元素的属性&#xff0c;如id、name、class等。那么通过AI的方式定位元素可能就不需要知道元素的属性&#xff0c;评价人对元素的判断来定位&#xff0c;比如&#xff0c;看到一个搜索框&#xff0c;直接使用ai:…

Tomcat安装及配置教程(IDEA整合Tomcat)

目录 友情提醒第一章、Tomcat下载与安装1.1&#xff09;Tomcat介绍1.2&#xff09;官网下载 第二章、Tomcat配置环境变量2.1&#xff09;windows环境变量配置2.2&#xff09;验证Tomcat配置是否成功2.3&#xff09;报错解决 第三章、IDEA整合Tomcat3.1&#xff09;打开IDEA开发…

11.Ceph 对象存储系统 RGW 接口

文章目录 Ceph 对象存储系统 RGW 接口概念逻辑单位创建RGW接口开启httphttps创建RadosGW账户S3接口访问测试 Ceph 对象存储系统 RGW 接口 概念 对象存储&#xff08;object storage&#xff09;是非结构数据的存储方法&#xff0c;对象存储中每一条数据都作为单独的对象存储&…

资深测试总结,自动化测试-JSON+YAML+CSV+Excel数据驱动(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 数据驱动 在自动…

三分钟为你揭晓什么软件可以音频转文字

在一个繁忙的国际会议上&#xff0c;艾丽莎是一位积极参与的会议记录员。她负责记录并整理与会者的发言内容&#xff0c;以便后续审阅和分析。然而&#xff0c;由于会议中使用英语进行交流&#xff0c;艾丽莎常常面对着大量的英文音频文件&#xff0c;需要将这些音频转换为文字…

C# 连接mysql数据库报错:Character set ‘utf8mb3‘ is not supported by .Net Framework.

最近项目突然连接mysql数据库出现一个bug&#xff0c;排查了半小时&#xff0c;最后更新MySql.Data版本解决了&#xff0c;错误信息如下&#xff1a; System.NotSupportedException: Character set utf8mb3 is not supported by .Net Framework.在 MySql.Data.MySqlClient.Cha…

C#List转IList方法

最近工作中使用到了C#的List和IList。 这里参考百度上的资料&#xff0c;总结一下。 IList使用命名空间&#xff1a; using System.Collections; List<T>类:表示可通过索引访问的对象的强类型列表&#xff0c;提供用于对列表进行搜索、排序和操作的方法。 IList<T&…