Spring的创建和使用

目录

  • Spring的创建
    • 1.创建一个普通的Maven项目
    • 2.添加spring框架支持
    • 3.添加启动类
  • 存储Bean对象
    • 1. 创建Bean
    • 2.将Bean注册到容器当中
  • 获取并使用Bean对象
    • 1.得到Spring上下文
    • 2. 获取指定Bean对象
    • 3. 使用Bean对象
  • 总结

Spring 是⼀个包含了众多⼯具⽅法的 IoC 容器。那么它就具备以下功能:

1.将对象存储到容器中
2 从容器中将对象取出来

Spring的创建

使⽤ Maven ⽅式来创建⼀个 Spring 项⽬,总共分为三步:

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

1.创建一个普通的Maven项目

在这里插入图片描述

然后点击下面创建

2.添加spring框架支持

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

  <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.2.3.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.3.RELEASE</version></dependency><!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --><dependency>

在这里插入图片描述
上述添加的模块有spring-context :spring上下文 ,还有 spring-beans:管理对象模块

3.添加启动类

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

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

在这里插入图片描述

存储Bean对象

存储Bean对象分为以下两步:

  1. 创建Bean
  2. 将创建的Bean注册到Spring容器当中

1. 创建Bean

Bean就是Java中的一个普通对象,实现代码如下:

public class User {public String sayHi(String name){return  name+"你好!";}
}

2.将Bean注册到容器当中

在 resources 根⽬录下添加Spring配置文件spring-config.xml

在这里插入图片描述
Spring配置文件格式固定,所以找地方保存即可
配置文件gitee地址

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

<beans> 中添加如下配置,即可将User对象注册到Spring中去

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

在这里插入图片描述

获取并使用Bean对象

获取并使用Bean对象需要三步:

  1. 得到Spring上下文
  2. 通过Spring上下文,获取某一个指定的Bean对象
  3. 使用Bean对象

1.得到Spring上下文

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

   //获取spring上下文,创建的时候需要配置 Spring 配置信息
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");

也可以使用BeanFactory得到Spring上下文

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

两者效果是一样的,ApplicationContext是BeanFactory的子类

常见面试题
ApplicationContext与BeanFactory
1.继承关系和功能⽅⾯来说:Spring 容器有两个顶级的接⼝:BeanFactory 和ApplicationContext。其中 BeanFactory 提供了基础的访问容器的能⼒,⽽ ApplicationContext属于 BeanFactory 的⼦类,它除了继承了 BeanFactory 的所有功能之外,它还拥有独特的特性,还添加了对国际化⽀持、资源访问⽀持、以及事件传播等⽅⾯的⽀持
2.从性能⽅⾯来说:ApplicationContext 是⼀次性加载并初始化所有的 Bean 对象,⽽BeanFactory 是需要那个才去加载那个,因此更加轻量。

2. 获取指定Bean对象

 //获取指定的Bean对象,使用名称获取User user = (User) applicationContext.getBean("user");//获取指定的Bean对象类型进行获取User user = (User) applicationContext.getBean(User.class);//获取指定的Bean对象名称+类型进行获取User user = (User) applicationContext.getBean("user",User.class);      

在这里插入图片描述

注意
当有⼀个类型被重复注册到 spring-config.xml 中时,只能使⽤根据名称获取。

3. 使用Bean对象

public class Test {public static void main(String[] args) {//获取spring上下文,创建的时候需要配置 Spring 配置信息
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");//BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));//获取指定的Bean对象名称+类型进行获取User user = (User) applicationContext.getBean("user",User.class);//调用指定对象相应方法System.out.println(user.sayHi("朱星星"));}
}

运行main方法
在这里插入图片描述

总结

  1. 操作容器之前,需要先得到容器。
  2. 存对象
  • 创建 Bean
  • 将 Bean 注册(配置)到 spring-confing.xml 中
  1. 取对象
  • 得到 Spring 上下⽂,并读取到 Spring 的配置⽂件
  • 获取某⼀个 Bean 对象
  • 使用Bean对象

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

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

相关文章

CloudCompare——M3C2计算两点云之间的鲁棒距离

目录 1.概述2、计算原理3、操作流程 本文由CSDN点云侠原创&#xff0c;原文链接。爬虫网站请自重。 M3C2 (plugin) 1.概述 CloudCompare中的Plugins -> M3C2 Distance 功能是用来计算两组点云间的鲁棒距离的特别方法。从CloudCompare-2.9版开始&#xff0c;M3C2插件还包括…

隐私计算大会亮点前瞻:《隐私计算应用研究报告(2023年)》发布预告

7月26日&#xff0c;2023隐私计算大会将于青岛正式扬帆&#xff0c;本次大会将齐聚业内专家大咖共论行业最新进展&#xff0c;洞察未来发展趋势&#xff0c;共同推进隐私计算行业蓬勃发展。 本次大会将公开正式发布《隐私计算应用研究报告&#xff08;2023&#xff09;》、“隐…

leetcode 9 回文数

class Solution {public boolean isPalindrome(int x) {if(x < 0){return false;}int num x;int value 0;while(num > 0){value value * 10 num % 10;num num / 10;}return value x;} }

阿里云RockMQ与SpringBoot的整合

前言&#xff1a; 开源版本Rocket和商业版本的RocketMQ有些不同&#xff0c;研究的是商业版本的RocketMQ&#xff0c;阿里云的官方文档&#xff0c;感觉有点乱。看不咋明白&#xff0c;网上虽然有教程&#xff0c;大都还是有点缺少&#xff0c;有时候会突然跳了步骤&#xff0c…

Java 设计模式——观察者模式

目录 1.概述2.结构3.案例实现3.1.抽象观察者3.2.观察对象3.3.具体观察者3.4.具体观察对象3.5.测试 4.优缺点5.使用场景6.JDK 源码解析——Observable / Observer6.1.Observable 类6.2.Observer 接口6.3.案例 1.概述 观察者模式 (Observer Pattern) 是一种行为型设计模式&#…

数据结构与算法——顺序表(顺序存储结构)及初始化详解

顺序表&#xff0c;全名顺序存储结构&#xff0c;是线性表的一种。通过《什么是线性表》一节的学习我们知道&#xff0c;线性表用于存储逻辑关系为“一对一”的数据&#xff0c;顺序表自然也不例外。 不仅如此&#xff0c;顺序表对数据的物理存储结构也有要求。顺序表存储数据…

HIVE SQL实现通过两字段不分前后顺序去重

--数据建表 drop table if exists db.tb_name; create table if not exists db.tb_name ( suj1 string,suj2 string ) ;insert overwrite table db.tb_name values ("语文","数学") ,("语文","英语") ,("数学","语文&…

Linux 漏洞扫描

Linux 漏洞扫描程序会仔细检查基于 Linux 的系统&#xff0c;以减轻潜在的风险和漏洞。 什么是 Linux 漏洞扫描程序 Linux 漏洞扫描程序是一种专门的漏洞扫描工具&#xff0c;旨在识别基于 Linux 的系统中的安全漏洞和弱点,它会扫描配置错误、过时的软件版本和已知漏洞。 为…

何时使用Windbg静态分析?何时使用Windbg动态调试?

目录 1、概述 2、使用Windbg静态分析dump文件 2.1、异常捕获模块自动生成dump文件 2.2、从Windows任务管理器中导出dump文件 2.3、从正在动态调试的Windbg中使用命令导出dump文件 2.4、使用Windbg静态分析dump文件的一般步骤 3、使用Windbg动态调试目标进程 3.1、程序发…

OpenCV的HSV颜色空间在无人车中颜色识别的应用

RGB属于三基色空间&#xff0c;是大家最为熟悉的&#xff0c;看到的任何一种颜色都可以由三基色进行混合而成。然而一般对颜色空间的图像进行有效处理都是在HSV空间进行的&#xff0c;HSV(色调Hue,饱和度Saturation,亮度Value)是根据颜色的直观特性创建的一种颜色空间, 也称六角…

【技巧】Maven重复依赖分析查找

【技巧】Maven重复依赖分析查找 遇到奇葩的错误可以考虑是不是依赖冲突了 比如同一段代码 再这个项目中好好的 另一个项目中不能用等 idea安装插件 maven helper 打开pom文件 输入要查找的依赖 将不用的排除掉 右键排除即可

Pandas Groupby:在Python中汇总、聚合和分组数据

GroupBy是一个非常简单的概念。我们可以创建一个类别分组&#xff0c;并对这些类别应用一个函数。这是一个简单的概念&#xff0c;但它是一种在数据科学中广泛使用的非常有价值的技术。在真实的的数据科学项目中&#xff0c;您将处理大量数据并一遍又一遍地尝试&#xff0c;因此…