【Spring】(3)IoC - bean 的概述(大纲)

【Spring】(3)IoC - bean 的概述(大纲)

一、bean的概述

该文章开始,将会系统的按照Spring官方文档进行案例演示。因为官方文档结构非常棒。

如果全部写在这篇文章中会比较长,所以有一些文章我拆分出去了。这篇文章就相当一个总览。

结构:

参考:1.3. Bean Overview

---- 分割线 -----	

命名bean

1.alias标签(别名)

我们可以给对象取别名。

例如,我现在配置文件中配置了一个user1对象,然后我在alias标签中,给这个对象取别名为u。此时如果我需要从ApplicationContext容器中取这个对象时,我可以使用u取到,而不需要使用user1。当然你使用user1也可以取到该对象。

    <bean id="user1" class="com.shengjava.pojo.User">
        <property name="name" value="长生"/>
    </bean>
    <!-- 给id为user1的对象,取别名为u和u1 -->
    <alias name="user1" alias="u"/>

还有另外一种取别名的方式,就是在bean标签中的name属性中配置。

例如,我现在给user1对象取别名,命名为u和u1,此时我可以从ApplicationContext对象中,使用u或u1都能取到该对象。

    <bean id="user1" class="com.shengjava.pojo.User" name="u,u1">
        <property name="name" value="长生"/>
    </bean>

参考:1.3.1. Naming Beans

延迟初始化bean

1.Lazy-initialized Beans

默认情况下,ApplicationContext容器在初始化的时候,会去创建所有单例的bean对象(默认bean对象作用域时就是单例的 ,详情请看bean对象的作用域)。

如果你不想IoC容器(ApplicationContext容器)在初始化(启动)时就创建对象,你可以设置bean对象的属性==lazy-init="true"==,这样该对象会在首次请求该对象时才进行创建bean对象。

    <!-- 开启延迟初始化 -->
    <bean id="user" class="com.shengjava.pojo.User" lazy-init="true"/>

如果你觉得在每一个bean上都加上 lazy-init="true" 太繁琐了,你可以如下这样配置,效果同上。

<beans default-lazy-init="true">
    <!-- no beans will be pre-instantiated... -->
</beans>

参考自:1.4.4. Lazy-initialized Beans

扩展

1.import标签(导入)

xml中我们还可以使用import标签,导入其他的xml配置文件。

比如将其他的xxx.xml配置全部导入到applicationContext.xml配置中,便于管理。

例如,我现在有一个叫做applicationContext.xml的配置文件,我可以在该文件中,使用import表情,导入beans2.xml配置文件。

语法:

 <import resource="beans2.xml"/>

参考:Composing XML-based Configuration Metadata