欢迎光临散文网 会员登陆 & 注册

2.2 一颗豆子的经历--Bean的配置与实例化

2023-04-01 21:05 作者:坤少的生活日记  | 我要投稿

本篇文章我们来介绍Bean的配置与实例化,让我们先来看一颗豆子的故事:

    从前有一颗小豆子,准确的来说,他自己也不知道自己是一颗怎样的豆子。只是听祖辈上讲,它有一天会长成一棵参天“大豆”。为了完成理想,他去找了农民伯伯,但是农民伯伯并不确定它是一颗怎样的豆子,怎么能乱种呢?于是小豆子踏上了“证明自己的道路”。

一、小豆子的身份证---Bean的配置

    首先小豆子找到了植物研究中心,据说任何植物的身世都可以查得到,顺便也可以办理一个身份证。小豆子抱着试试看的心态来到了这里,发现并不简单。这里豆子的命名是分全国性质的和地区性质的。小豆子也是头一次听说,在全国范围内来说,每一颗豆子一出生就会有一个编号(id),并附带一个豆子名称(name),还需要家庭住址(class),更有高级一点的豆子还会声明一下自己适合生长的区域(scope)。小豆子并不会搞这个,它请工作人员来帮忙。工作人员告诉他,申请身份认证就需要明确以上几点,科学一点的说法是Bean的配置。

    其实在Spring中也一样,我们要使用任何一个Bean对象都需要知道他的信息,也就是需要提前配置他们,一般情况下我们使用的是XML文件的配置方式。

   以下就是小豆子要要填写的信息的介绍,我已经为大家整理好了:

Bean装配的常用属性

    那么地区性命名是怎么回事呢,原来在某一地区内的豆子,当地政府都会详细的记录豆子属性的值,包括姓名,年龄,性别,年龄等等。而这些赋值需要使用特殊的标签包裹起来【constructor-arg(构造注入)、property(setter注入)】,还有的一个属性又包含多个属性,为了便于管理,他们把这种情况封装成一个对象,整体进行赋值(ref对象注入)。

    其实,在Bean对象实现的每一个实体类中,都会存在这样的现象,除了私有普通属性使用还有私有对象属性,用于在实体类体中调用该对象的方法

    我也将这些属性整理出了一张表格,大家可以看一下。


Bean元素的子元素

    了解了上述情况后,小豆子也是第一时间办好了一张身份证,让我们来看一下(setter方法注入):

二、小豆子上户口---Bean的实例化

    光办理好身份证了,还不能证明自己是自己,还需要在户籍网站上注册一下这里注册户口的方式有三种,一种是自己在家自己登录网站注册(构造方法实例化)、一种是通过中介注册户口(实例工厂实例化)、最后一种就是现场找工作人员办理(静态工厂实例化)为了了解哪一种方式最为准时,小豆子也是做了很全面的功课呢,让我们一起来看看都做了那些功课吧:

1、构造方法实例化

    首先小豆子了解的就是构造方法实例化,他指的就是通过对应Bean对象的实现类中的无参构造方法来实例化Bean。由于可以不借助外来力量就可以完成实例化,这里形象的解释为网上注册。

(1)首先需要在pom.xml中导入相关依赖

2、创建一个Bean的实现类,里面定义一个方法,用于显示内容

3、创建配置文件applicationContext.xml,使用构造方法实例化Bean对象

4、编写实现类BeanTest,测试实例化是否完成

5、运行测试类,查看结果

运行结果

    这样看来,自己在家注册户口也不难嘛。但是小豆子可是兜兜里不缺钱的那种,非得看看找中介能不能更方便一些。

2、实例工厂实例化

小豆子想了解一下中介是怎样帮忙注册户口的,于是打给一个有名的中介打了一个电话,了解到中介的操作步骤如下:

(1)在pom.xml中导入依赖(和构造实例化相同)

(2)创建实现类Bean,编写一个方法用于显示信息

(3)创建BeanFactory类(中介类),用于创建Bean的实例化对象。

(4)创建配置文件applicationContext.xml,用于声明Bean对象实例,Bean工厂实例,以及创建Bean的关系。

(5)编写测试类,查看运行结果

运行成功

    小豆子一看,貌似找中介还更加麻烦一些呢!而且把数据交给中介,还会有数据泄露的风险,还是算了吧。小豆子打算去现场找工作人员问一下,于是便有了下面的流程:

3、静态工程实例化

(1)在pom.xml中导入依赖(和构造实例化相同)

(2)创建实现类Bean,编写一个方法用于显示信息

(3)创建BeanFactory类(政府类),写一个静态方法用于创建Bean的实例化对象。

(4)创建配置文件applicationContext.xml,这里只用声明BeanFactory实例化对象(政府),调用其中的方法进行Bean额实例化对象。

(5)编写测试类,运行结果:

运行成功

来都来啦,那就在这里找工作人员办理吧,小豆子最终成功的办理了户口注册。

三、小豆子有话说---三种实例化的流程比较

1、配置方面的区别

构造方法:

(1)创建实体类时,需要创建对应的无参构造

(2)需要创建对应的setter方法

(3)XMl配置文件中只需配置实体的bean

(4)测试类中使用Spring容器获取对象,用获取到的对象调用相应的方法。

实例化工厂

(1)需要创建对应的工厂类,使用工厂对象用来创建实体.

(2)xml配置文件里需要同时配置bean,和beanFactory的bean类型.

其中实体Bean需要声明工厂对象,工厂对象需要声明所使用的方法。

<bean id="beanFactory" class="com.hdc.bean.BeanFactory"></bean>

    <bean id="bean1" factory-bean="beanFactory" factory-method="createBean"></bean>

(3)在测试类中,通过spring容器获取的仍然是原实体类的Bean对象,使用实体对象调用相应的方法。

静态工厂:

(1)需要创建对应的静态工厂类,用来创建实体.

(2)xml文件对应配置,需要声明实体Bean对象,声明工厂对象及所需要调用的方法。

<bean id="bean1" class="com.hdc.bean.BeanFactory" factory-method="beanCreate"></bean>

(3)在测试类中,获取的是工厂Bean对象,通过工厂对象创建实体对象,并使用实体对象调用相应的方法。

2、三种实例化流程

1》,使用类构造方法实例化(无参构造函数)

(1)获取spring容器,找到对应的Bean

(2)根据id值找到对应的Bean对象

(3)通过id值和实现类找到Bean,通过调用其构造方法,实现对象的创建

(4)使用创建好的实体对象调用对象方法。

构造方法实例化

2》使用静态工厂方法实例化

(1)从Spring容器中获取Bean对象

(2)配置实现类,创建beanFactory工厂对象

(3)调用工厂对象的BeanCreate方法,用于创建一个新的对象。

(4)使用BeanCreate方法创建一个实体对象

(5)通过调用BeanFactory对象间接创建实体对象。

(6)使用创建好的实体对象调用实体对象的方法。

静态工厂实例化Bean

3》使用实例工厂方法实例化

(1)从spring容器中获取Bean对象

(2)通过Bean表示找到对应的Bean对象

(3)通过id值找到已经配置的Bean实例化工厂对象

(4)通过实现类找到对应的实例化BeanFactory类

(5)根据工厂方法标签确定使用哪种工厂方法

(6)执行所选的工厂方法,创建对应的实体对象

(7)实体对象创建完成,在测试类中使用getBean方法获取创建好的实体对象。

(8)使用创建好的实体对象调用相应的方法

实例工厂实例化

     其实我们形象化的比喻是根据xml配置文件来讲的,静态工厂实例化的时候旨在xml里面配置了工厂类Bean对象,使用其自身的方法进行Bean对象的创建,所以类比做工作人员用自身的系统注册户口。而实例化工厂在配置的时候配置了两个Bean对象,一个是需要创建的实体类Bean对象,另一个是工厂类Bean对象(中介)。首先需要声明工厂类对象(中介),并声明实现类(地址)。然后再声明实体类Bean对象,并用factory-bean标签声明时用到的工厂类Bean对象(找的是哪一家中介),再使用factory-method确定使用工厂类的什么方法(需要办理什么业务),流程都是差不多的,只不过是方式不同方式不同罢了。

小豆子的故事就告一段落了,不知道大家喜不喜欢这种叙述风格,如果喜欢的话,我们会继续书结下回,继续小豆子的故事。

欢迎大家对文章中的错误进行评论指正,关注我,一起学习Spring一起进步。

2.2 一颗豆子的经历--Bean的配置与实例化的评论 (共 条)

分享到微博请遵守国家法律