【Java第33期】:在普通的Maven项目中存储Bean对象并获取和使用
创始人
2024-02-02 19:36:52

作者:有只小猪飞走啦

博客地址:https://blog.csdn.net/m0_62262008?type=blog

内容:存储Bean对象,再在Spring中获取Bean对象,对其进行使用。

在这里插入图片描述

文章目录

  • 前言
  • 一,存储Bean对象
    • 1,创建Bean对象
    • 2,把Bean注入到Spring中
  • 二,获取并使用Bean对象
    • 1,得到Spring上下文
      • 第一种
      • 第二种
    • 2,获取Bean对象
      • 第一种:根据名称来获取Bean
      • 第二种:根据一个Class 参数获取bean
      • 第三种:根据根据String (bean id)+Class 参数获取bean
    • 3,使用Bean对象

前言

本博客内容是小博主在学习之后的总结,如果哪里有错误或者不太完善的都可以私聊我哈,如果哪里你不太理解的也可以来私聊我哦~

一,存储Bean对象

我们可以总结一下,存储Bean对象需要以下两步:

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

那我们一一来实现一下以上的步骤:

1,创建Bean对象


package com.tom;public class User1 {public void sayHi(){System.out.println("Hi,Spring~");}
}

我们可以看到,所谓的Bean,其实就是Java语言中一个普通的对象。

2,把Bean注入到Spring中

在创建好的项⽬中添加 Spring 配置⽂件 spring-config.xml,将此⽂件放到 resources 的根⽬录下,如下图所示:
在这里插入图片描述
Spring 配置⽂件的固定格式为以下内容:



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


注意:上面添加的配置中id必须是小写的。

二,获取并使用Bean对象

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

  1. 得到 Spring 上下⽂对象,因为对象都交给 Spring 管理了,所以获取对象要从 Spring 中获取,就要先得到 Spring 的上下⽂。
  2. 通过 Spring 上下⽂,获取某⼀个指定的 Bean 对象。
  3. 使⽤ Bean 对象。
    注意:如果想要获取多个Bean对象,只要重复以上的2、3步骤即可

那下面我们来一一操作一下上面的步骤:

1,得到Spring上下文

顺便复习一下,什么是Spring应用上下文?
简单地说:应用上下文即是Spring容器的一种抽象化表述,而我们常见的ApplicationContext本质上说就是一个维护Bean定义以及对象之间协作关系的高级接口。我们都知道Spring的本质是一个IoC容器。而容器并不唯一,框架本身就提供了很多个容器的实现,大概分为两种类型:一种是不常用的BeanFactory,这是最简单的容器,只能提供基本的DI功能;还有一种就是继承了BeanFactory后派生而来的应用上下文,其抽象接口也就是上面提到的的ApplicationContext,它能提供更多企业级的服务,例如解析配置文本信息等等。
Spring提供的多种类型容器:
(1) AnnotationConfigApplicationContext:从一个或多个基于java的配置类中加载上下文定义,适用于java注解的方式;

(2) ClassPathXmlApplicationContext:从类路径下的一个或多个xml配置文件中加载上下文定义,适用于xml配置的方式;

(3)FileSystemXmlApplicationContext: 从文件系统下的一个或多个xml配置文件中加载上下文定义,也就是说系统盘符中加载xml配置文件;

(4)AnnotationConfigWebApplicationContext: 专门为web应用准备的,适用于注解方式;

(5)XmlWebApplicationContext: 从web应用下的一个或多个xml配置文件加载上下文定义,适用于xml配置方式。

上面说了这么多,就是为了让我们更加理解Spring,下面我们来得到Spring的上下文-----》

第一种

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

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App3 {public static void main(String[] args) {ApplicationContext context =new  ClassPathXmlApplicationContext("spring-config.xml");}
}

注意:(1)得到 Spring 的上下⽂对象,创建的时候需要配置 Spring 配置信息
(2 )spring-config.xml 一定要写对,如下:
在这里插入图片描述
把它复制粘贴过来即可。

第二种

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

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;public class App3 {public static void main(String[] args) {BeanFactory beanFactory =new XmlBeanFactory(new ClassPathResource("spring-config.xml"));}}

ApplicationContext 和 BeanFactory 效果是⼀样的,ApplicationContext 属于 BeanFactory 的⼦类。

2,获取Bean对象

第一种:根据名称来获取Bean

import com.tom.User1;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App3 {public static void main(String[] args) {ApplicationContext context =new  ClassPathXmlApplicationContext("spring-config.xml");User1 user1 = (User1) context.getBean("user1");}
}

注意:这里getBean括号里的内容要和上面配置中的”user1“要一致,如下:
在这里插入图片描述
在这里插入图片描述

第二种:根据一个Class 参数获取bean

import com.tom.User1;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App3 {public static void main(String[] args) {ApplicationContext context =new  ClassPathXmlApplicationContext("spring-config.xml");//User1 user1 = (User1) context.getBean("user1");User1 user1 = context.getBean(User1.class);}
}

和第一种方法对比,我们可以发现,这里的context不需要强转为User1,为什么呢?
因为User1.class中有User1的路径,而根据名称的不知道其类型,所以要把其强置为User1的类型。

第三种:根据根据String (bean id)+Class 参数获取bean

import com.tom.User1;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App3 {public static void main(String[] args) {ApplicationContext context =new  ClassPathXmlApplicationContext("spring-config.xml");User1 user1 = context.getBean("user1",User1.class);}}    

一般会这样使用来获取Bean对象。

3,使用Bean对象

import com.tom.User1;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class App3 {public static void main(String[] args) {ApplicationContext context =new  ClassPathXmlApplicationContext("spring-config.xml");User1 user1 = context.getBean("user1",User1.class);user1.sayHi();}}

运行结果:
在这里插入图片描述
以上就是Bean对象的存储、获取和使用的全部过程,希望对你有帮助!
关注小猪,小猪带你一起学习~
下期再见啦!
请添加图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...