Spring-IOC学习笔记-02基于XML创建Bean

Posted Moon&&Dragon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring-IOC学习笔记-02基于XML创建Bean相关的知识,希望对你有一定的参考价值。

基于XML创建Bean

4.1 基于构造方法

4.1.1 无参构造

默认的就是无参构造

Women在无参构造输出

public Woman() {
  System.out.println("无参海选女嘉宾");
}

配置bean

<bean id="lili" class="com.moon.entity.Woman">
  <property name="name" value="莉莉"/>
  <property name="age" value="18"/>
  <property name="outLook" value="面容较好的"/>
</bean>

创建IOC

public static void main(String[] args) {
  new ClassPathXmlApplicationContext("applicationContext.xml");
}

结果

在这里插入图片描述

4.1.2 有参数构造

在使用有参构造器创建时,也需要同时将依赖注入。

<bean id="lili" class="com.moon.entity.Woman">
  <constructor-arg name="name" value="莉莉"/>
  <constructor-arg name="age" value="18"/>
  <constructor-arg name="outLook" value="面容较好的"/>
</bean> 

4.2 基于工厂模式

隐藏创建的细节

4.2.1 静态工厂

java静态工厂类

public class WomanStaticFactory {
    public static Woman selectLili(){
        Woman lili = new Woman();
        lili.setName("莉莉");
        lili.setAge(18);
        lili.setOutLook("面容较好的");
        return lili;
    }
    public static Woman selectMary(){
        Woman lili = new Woman();
        lili.setName("玛丽");
        lili.setAge(20);
        lili.setOutLook("体态丰满的");
        return lili;
    }
}

配置静态工厂

<!-- 通过class定位到静态工厂类,使用factory-menthod定位到方法 --> 
<bean id="lili" class="com.moon.factory.WomanStaticFactory" factory-method="selectLili"/>
<bean id="mary" class="com.moon.factory.WomanStaticFactory" factory-method="selectMary"/>

4.2.2 工厂实例

java实例工厂类

public class WomanFactory {
    public Woman selectLili(){
        Woman lili = new Woman();
        lili.setName("莉莉");
        lili.setAge(18);
        lili.setOutLook("面容较好的");
        return lili;
    }
    public Woman selectMary(){
        Woman lili = new Woman();
        lili.setName("玛丽");
        lili.setAge(20);
        lili.setOutLook("体态丰满的");
        return lili;
    }
}

配置实例工厂

<!-- 添加工厂的bean(使用工厂类的无参创建) -->
<bean id="factory" class="com.moon.factory.WomanFactory"/>

<!-- 不用使用class去定位,直接用factory-bean定位到一个工厂对象,使用factory-method定位到工厂方法 -->
<bean id="lili" factory-bean="factory" factory-method="selectLili"/>
<bean id="mary" factory-bean="factory" factory-method="selectMary"/>

4.3 配置文件书写规范

1、<bean/> 标签中的id和name都是用来设置对象在IOC中标识。区别如下:

  • 同一个配置文件不可以重复
  • 如果在不同配置文件中出现相同的 IDNamebean,排序在后面的bean会覆盖前面的 bean
  • 同一个bean中同时配置了idname,那么 id为容器中的唯一标志,而name为别名,如果配置了多个name,那么 name全部是别名
  • 如果 这个bean配置了name没有id,那么name为唯一标志。如果name配置了多个,那么第一个name是唯一标志,剩余的name为别名
  • 在一个bean中,name可以写多个标志,id只能设置唯一标志。

2、如果没有配置name和id的话,ioc容器会给bean设置一个默认标识,该标识是bean的class+#数字标识,数字从0开始。

com.moon.entity.Woman#0

如过根据标识去获取类,只写了全类名,ioc会去获取全类名+#0的bean,也就是第一个bean。

以上是关于Spring-IOC学习笔记-02基于XML创建Bean的主要内容,如果未能解决你的问题,请参考以下文章

Spring-IOC学习笔记-08基于JavaConfig开发

Spring-IOC学习笔记-04扩展命名空间

Spring-IOC学习笔记-03DI依赖注入

Spring-IOC学习笔记-06bean的生命周期

Spring-IOC容器-Bean管理-基于XML方式超详解!

SpringMVC学习笔记-02搭建SpringMVC