Spring初识(二)

前言

经过前面的学习,我们已经知道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=newClassPathXmlApplicationContext("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.hqwc.cn/news/26884.html

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

相关文章

导出python环境的所有安装包

导出操作 pip freeze > requests.txt批量导入操作 pip install -r requests.txt

Unity Arduino 串口通信

一、Unity端发送消息&#xff0c;Arduino端接收消息 通过串口通信 Arduino端 #include <Arduino.h>#define PIN_KEY 5 uint item;void setup() {item 0;Serial.begin(115200);pinMode(PIN_KEY, OUTPUT); }void loop() {if(Serial.available()>0){item Serial.rea…

【统计函数3】——excel常见函数

相关数据资料来源于网易 函数一览&#xff1a; rank、rand、randbetween、floor、int rank函数: 求某单元格在某区域内的排名 RANK(数值,引用区域,降序0/升序1)范围多指定&#xff1a; 分开的范围之间可用逗号隔开&#xff0c;最后再用一个小括号括起来。F4可以快速锁定行和列。…

【每日随笔】摩托车安全驾驶 ① ( 摩托车骑行准备 | 买好保险 | 摩托车必要改装 - 护杠 + 行车记录仪 | 骑行护具 )

文章目录 一、摩托车骑行准备1、买好保险2、摩托车必要改装 - 护杠 行车记录仪3、骑行护具 德州考驾照归来 , 提了一辆 铃木 UY125 , 注意安全驾驶 , 以后上班就骑摩托车了 ; 由于居住证上的地址是海淀区 , 目前住在学院路 , 导致无法把车落户到自己名下 , 只能上公户了 ; 车…

Java List中通过对象属性排序,可实现多条件排序

直接上代码&#xff1a; import com.google.common.collect.Lists; import lombok.AllArgsConstructor; import lombok.Data;import java.util.Comparator; import java.util.List; import java.util.stream.Collectors;/*** List 对象属性排序*/Data AllArgsConstructor clas…

Unity 事件函数的执行顺序

脚本生命周期流程图 Awake&#xff1a;在所有 Start 函数之前&#xff0c;以及 prefab 实例化之后调用。&#xff08;如果一个 GameObject 在启动期间处于非活动状态&#xff0c;则在激活之前不会调用它。&#xff09;OnEnable&#xff08;仅在对象处于活动状态时调用&#xff…

领略大数据分析的魅力:迈向FineBI的世界

版权声明&#xff1a;本文为 小异常 原创文章&#xff0c;非商用自由转载-保持署名-注明出处&#xff0c;谢谢&#xff01; 本文网址&#xff1a;https://sunkuan.blog.csdn.net/article/details/131698171 文章目录 一、FineBI介绍&#xff08;6.0版本&#xff09;1、使用人群…

深入理解网络通信和TCP、IP协议-01

1、网络协议 计算机网络是什么&#xff1f; 随着计算机技术发展&#xff0c;计算机的体积和价格都在下降&#xff0c;之前计算机多用于研究机构&#xff0c;现 阶段逐步进入一般的公司用于办公。原来计算机之间传输数据需要通过软盘等第三方存储介 质进行转存&#xff0c;人们…

TCP/IP基础知识笔记

应用层&#xff1a;为用户提供应用功能&#xff0c;比如 HTTP、FTP、Telnet、DNS、SMTP等。 应用层是工作在操作系统中的用户态&#xff0c;传输层及以下则工作在内核态。 传输层&#xff1a;为应用层提供网络支持。 *TCP包含众多特性比如流量控制、超时重传、拥塞控制等因此可…

Java多线程下的单例模式参考

Java多线程下的单例模式参考 单例有多种的写法&#xff0c;本例是懒汉式单例的一种写法。在高并发环境下需要注意的是&#xff1a; 1.单例在并发访问并调用其相应的getInstance方法的时候也会造成创建多个实例对象&#xff0c;加锁是必要的。 2.使用synchronized是比较好的解…

【SpringBoot】SpringBoot-Admin 服务监控 + 告警通知

简单介绍 Spring Boot Actuator 是 Spring Boot 自带的一个功能模块&#xff0c; 提供了一组已经开箱即用的生产环境下常用的特性和服务&#xff0c;比如应用程序的健康检查、信息暴露、度量收集、日志记录等。 在实际项目中&#xff0c;Actuator 可以帮助我们快速了解应用程序…

使用dhtmlx-gantt甘特图插件定制预约表【实战】

示例传送门 定制预约表展示 一、安装 npm i dhtmlx-gantt二、配置解释与汇总 //自定义表头列 gantt.config.columns = [{name: "