【Java第33期】:在普通的Maven项目中存储Bean对象并获取和使用

作者:有只小猪飞走啦

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

内容:存储Bean对象,再在Spring中获取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 配置⽂件的固定格式为以下内容:

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

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

<bean id="user1" class="com.tom.User1"></bean>

注意:上面添加的配置中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对象的存储、获取和使用的全部过程,希望对你有帮助!
关注小猪,小猪带你一起学习~
下期再见啦!
请添加图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱撸猫的程序媛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值