1. beans作为xml配置文件的最顶层元素,包含0或者1个<description>和多个<bean>,<import>,<alias>
他拥有以下相应的属性。
default-lazy-init。其值可以指定为true / false,默认值为false。 用来标志是否对所有的<bean>进行延迟初始化。
default-autowire。可以取值为no,byName,byType,constructor以及autodetect。默认值为no,如果使用自动绑定的话,用来标志全体bean使用哪一种默认绑定方式。
default-dependency-check。可以取值为none,objects,simple以及all,默认值为none,即不做依赖检查。
default-init-method。如果所管辖的<bean>按照某种规则,都有同样名称的初始化方法的话,可以在这里统一指定这个初始化方法名,而不用在每一个<bean>上都重复单独指定。
default-destroy-method。与default-init-method相对应,如果所管辖的bean有按照某种规则使用了相同名称的对象销毁方法,可以通过这个属性统一指定。
2.<description> <import>和<alias>
<description>在文件中指定一些描述性的信息。
<import>根据模块功能或者层次关系,将配置信息放到多个配置文件中。
<alias>为某些bean起一些外号,通常是为了减少输入。
这三个元素通常使用得较少,也不是必需的,也就不写太详细了。
3.<bean>
<bean id="AexceptionResolver" class="...... . myExceptionResolver">
</bean>
id属性:注册到容器的对象都需要一个唯一标志来将彼此区分。如人的身份证号。指定当前对象的beanName是什么。也可以指定在<alias>设置的别名。
<bean id="AexceptionResolver"
name= ".../../xxx/AExceptionResolver, BExceptionResolver"
class="...... . myExceptionResolver">
</bean>
name属性:与id属性相比,name属性更灵活,可以使用id不能使用的一些字符,比如/。而且可以通过逗号,空格或者冒号来分割指定多个name。name的作文跟使用<alias>为id指定多个别名基本相同。
class属性:每个注册到容器的对象都需要通过<bean>元素的class属性指定其类型。
4.注入方式
(1)构造方法注入:<constructor-arg>标签
<bean id="AexceptionResolver" class="...... . myExceptionResolver">
<constructor-arg ref="123" />
</bean>
type属性:若构造方法注入时,属性可被多个参数映射时,比如 123 既符合int,又符合String时,则需要type参数来指定具体映射哪个参数。
<bean id="AexceptionResolver" class="...... . myExceptionResolver">
<constructor-arg ref="123" type="int" />
</bean>
这样就会映射int类型参数。
index属性:若传入多个属性,则可以用index属性来指定对应哪个参数。
<bean id="AexceptionResolver" class="...... . myExceptionResolver">
<constructor-arg value="123" index="0" />
<constructor-arg ref="CexceptionResolver" index="1" />
</bean>
(2)setter方法注入: <property>标签
<bean id="AexceptionResolver" class="...... . myExceptionResolver">
<property name="123" />
<property name="456" />
</bean>
当然<constructor-arg>与<property>标签是可以同时使用的。
<bean id="AexceptionResolver" class="...... . myExceptionResolver">
<constructor-arg value="123" index="0" />
<property name="456" ref="CExceptionResolver" />
</bean>
内嵌元素有<ref>,<value>,<bean>,<list>,<set>,<map>
<ref>和<value>上面例子有,就不举例了。
<bean>:
<bean id="AExceptionResolver" class="...... . myExceptionResolver">
<constructor-arg index="0" >
<bean class=".../BExceptionResolver" />
</constructor-arg>
</bean>
<list>:
<bean id="AExceptionResolver" class="...... . myExceptionResolver">
<constructor-arg index="0" >
<list>
<value>sth</value>
<ref bean="someBeanName" />
<bean class="..."/>
</list>
</constructor-arg>
</bean>
<set>:
<bean id="AExceptionResolver" class="...... . myExceptionResolver">
<constructor-arg index="0" >
<set>
<value>sth</value>
<ref bean="someBeanName" />
<bean class="..."/>
<list>...</list>
</set>
</constructor-arg>
</bean>
<map>:
<bean id="AExceptionResolver" class="...... . myExceptionResolver">
<constructor-arg index="0" >
<map>
<entry key="strValueKey">
<value>sth</value>
</entry>
<entry>
<key>objectKey</key>
<ref bean="someObject" />
</entry>
</map>
</constructor-arg>
</bean>