• 【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~");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    我们可以看到,所谓的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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

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

    注意:上面添加的配置中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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    注意:(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"));
                    }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    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");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    注意:这里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);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    和第一种方法对比,我们可以发现,这里的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);
            }
        }    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    一般会这样使用来获取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();
            }
       }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

  • 相关阅读:
    python基于php+MySQL的个人网站的设计与实现
    java计算机毕业设计校园代购服务订单管理系统源码+系统+mysql数据库+lw文档+部署
    Mybatis拦截器注解@Intercepts与@Signature注解属性说明
    Java版本spring cloud + spring boot企业电子招投标系统源代码
    vue实现自定义指令和指令的周期
    0093 二分查找算法,分治算法
    ccd电池充电器坏了
    iOS Hook 崩溃
    Spring Boot Starter必知必会(Spring Boot Starter简介及定义方法分享)
    Prometheus部署、操作及Grafana展示、告警
  • 原文地址:https://blog.csdn.net/m0_62262008/article/details/127945071