对Spring IOC容器相关整理

Posted hxz-nl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对Spring IOC容器相关整理相关的知识,希望对你有一定的参考价值。

1、命名空间 :Beans 下的元素及属性

<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-3.0.xsd" >
    <description>rabbitmq 连接服务配置</description>
    <!--步骤1、配置链接工厂-->
    <bean id="connectionFactory" class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
        <property name="host" value="$mq.address"/>
        <property name="port" value="$mq.port"/>
        <property name="password" value="$mq.pwd"/>
        <property name="username" value="$mq.user"/>
        <property name="publisherConfirms" value="true"/>
        <property name="publisherReturns" value="true"/>
        <property name="virtualHost" value="$mq.vhost"/>
        <property name="requestedHeartBeat" value="50"/>
    </bean>
 //.......
</beans>

对于配置XML文件 Spring 提供了很多的元素和属性,用于对对象与其依赖关系进行描述。Spring的XML文件就像一张记录详细配料,火候等的菜谱。对于Spring XML文件,我们一般通过以<beans>....</beans>包围的元素开始配置。

有关http://www.springframework.org/schema/beans 中对于beans 的定义可参见:标签系列一:spring 中beans解释以及beans标签里面的属性

接下来我要整理一下关于beans 的相关的元素及属性:

beans命名空间下的元素

技术图片

通过编辑器可以轻易的找到在beans命名空间下,存在beans、bean、alias、description、import 五个元素存在。(也可能是4个, 在http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 版中没有beans元素,4.0版存在(默认最新版请把上文中的-3.0 去掉))

1.1、beans元素

beans元素是顶层(通常为根)元素。允许定义所有嵌套bean定义的默认值。

beans元素有自己的属性:

技术图片

1.1.1、default-autowire 属性:

default-autowire 有五个值 分别如下:

技术图片

默认的值为:no 即不启用自动注入。

技术图片

default:实际上是会优先执行constructor然后是byType

byType:这个是会根据类型去注入,当找到了会直接注入,没有找到不会报错,但是找到多个会报No unique bean of type的错误

byName:这个会根据name注入

constructor:这个是通过构造注入

no:不启用自动注入

1.1.2、default-autowire-candidates 属性:

 default-autowire-candidates是候选者,自动装配时即匹配则被包含。不匹配的排除在外。

default-autowire-candidates属性的值允许使用模式字符串,例如我们制定default-autowire-candidates=“*abc”,则所有以“abc”结尾的Bean都将被自动装配。它还支持多个字符,可以通过,空格 等分割。

1.1.3、default-init-method 和 default-destroy-method 属性:

default-init-method="init" default-destroy-method="destroy"

 很多Bean都需要配置初始化方法和销毁方法,那么可以在beans标签中配置default-init-method和default-destroy-method来指定所有Bean的默认初始化方法和销毁方法 (initdestroy 是bean中的方法)

 1.1.4、default-lazy-init 属性:

spring配置默认default-lazy-init为false,当属性default-lazy-init设置成true时,sping不会再去加载整个对象实例图,大大减少了初始化的时间,减少了spring的启动时间。

1.1.5、default-merge 属性:

 从Spring 2.0M2开始,beans支持default-merge= "true" 的定义,子类不需要重新定义父类的List型属性中已定义过的内容 

 

以上是关于对Spring IOC容器相关整理的主要内容,如果未能解决你的问题,请参考以下文章

Spring IOC :相关接口分析手写简易 Spring IOC

Spring IOC :相关接口分析手写简易 Spring IOC

Spring IOC :相关接口分析手写简易 Spring IOC

Spring01——你应该了解的,有关 IOC 容器的一切

Spring框架学习之IOC

Spring:笔记整理——IOC容器