`
futurehuhu
  • 浏览: 36268 次
  • 性别: Icon_minigender_1
  • 来自: shanghai
文章分类
社区版块
存档分类

Spring Xml 文件的配置 参数 属性 说明

阅读更多

1、value元素

<value/>元素通过字符串来指定属性或构造器参数的值。

<bean id="myDataSource" detroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
 <property name="driverClassName">
  <value>com.mysql.jdbc.Driver</value>
 </proerpty>
 <property name="url">
  <value>jdbc:mysql://localhost:3306/mydb</value>
 </property>
 <property name="username">
  <vlaue>root</value>
 </property>
</bean>

2、idref元素

idref元素用来将容器内其它bean的id传给<constructor-arg/>或<property/>元素,同时提供错误难功能。

<bean id="theTargetBean" class="..."/>
<bean id="theClientBean" class="...">
 <property name="targetName">
  <idref bean="theTargetBean" />
 </property>
</bean>

等同于:

<bean id="theTargetBean" class="..." />
<bean id="theClientBean" class="...">
 <property name="targetName">
  <value>theTargetBean</value>
 </property>
</bean>

使用idref标记允许容器在部署时验证所被引用的bean是否存在。此外,如果被引用的bean在同一XML文件内,且bean名字就是bean id,那么可以使用local属性。
此属性允许XML解析器在解析XML文件时来对引用的bean进行验证。

<property name="targetName">
 <idref local="theTargetBean" />
</property>

3、ref元素

形式一:<ref bean="someBean">
这是最常见的形式是通过使用ref标记指定bean属性的目标bean,通过该标签可以引用同一容器或父容器内的任何bean(无论是否在同一XML文件中)。
XML‘bean’元素的值即可以是指定的bean的id值也可以是其name值。

形式二:<ref local="someBean">
使用ref的local属性指定目标bean,它可以利用XML解析器来难所引用的bean是否存在同一文件中。local属性值必须是目标bean的id属性值。

形式三:<bean parent="someBean">
通过使用ref的parent属性来引用当前窗口的父容器中的bean。parent属性值即可以是目标bean的id值,也可以是name属性值。

4、内部 bean:

所 谓内部bean(inner bean)是指在一个bean的<property/>或<constructor-arg/>中使用< bean/>元素定义的bean.内部bean不需要有id或name属性,即使有也会被窗口忽略.
内部bean总是匿名的且它们总是prototype模式的.同时将内部bean注入到包含该内部bean之外的bean是不可能的.
<bean id="outer" class="...">
 <property name="target">
  <bean class="com.mycoompany.Person">
   <property name="name" value="Fiona Apple"/>
   <property name="age" value="25"/>
  </bean>
 </property>
</bean>

5、集合合并:

从Spring2.0开始,Spring IoC容器将支持集合的合并。父子集合元素合并后的值就是子集合中的最终结果,而且子集合中的元素值将覆盖父集合中的对应的值。
<beans>
<bean id="parent" abstract="true" class="example.ComplexObject">
 <property name="adminEmails">
  <props>
   <prop key="administrator">administrator@somecompany.com</prop>
   <prop key="support">support@somecompany.com</prop>
  </props>
 </property>
</bean>
<bean id="child" parent="parent">
 <property name="adminEmails">
  <props merge="trur">
   <prop key="sales">sales@somecompany.com</prop>
   <prop key="support">support@somecompany.co.uk</prop>
  </props>
 </property>
</bean>
</beans>

合并后内容:

administrator=administrator@somecompany.com
sales=sales@somecompany.com
support=support@somecompany.co.uk

list集合有排序功能,父bean的列表内容将排在子bean列表内容的前面;
merge属性必须在继承的子bean中定义。

6、Nulls

<null/>用于处理null值。Spring会把属性的空参数当作空字符串处理。

<bean class="ExampleBean">
 <property name="email">
  <value></value>
 </property>
</bean>

等同于

excapleBean.setEamil("");

而null值则可以使用<null/>元素来表示:

<bean class="ExampleBean">
 <property name="email"><null/></property>
</bean>


7、简写:

针对常见的value值或bean的引用,Spring提供了简化格式用于替代<value/>和<ref/>元素。
<property/>、<constructor-arg/>、<entry/>元素都支持value属性,它可以用来替代内嵌的<value/>元素。

<property name="myProperty">                           
 <value>hello</value>           =====            <property name="myProperty" value="helo" />
</property>

<constructor-arg>
 <value>hello</value>           =====            <constructor-arg value="hello" />
</construtctor-arg>

<entry key="myKey">
 <value>hello</value>           =====            <entry key="myKey" value="hello" />
</entry>


<property/>和<constructor-arg/>支持类似的简写属性ref,它可以替找整个内嵌的</ref>元素。

<property name="myProperty">
 <ref bean="myBean">            =====            <property name="myProperty" ref="myBean" />
</property>

<constructor-arg>
 <ref bean="myBean">            =====            <constructor-arg ref="myBean" />
</constructor-arg>

切记:尽管存在等同于<ref bean="xxx" >元素的简写形式,但并没有<ref local="xxx">的简写形式。

map中的entry元素的简写形式为key/key-ref和value/value-ref属性。

<entry>
 <key>
  <ref bean="myKeyBean" />            =====          <entry key-ref="myKeyBean" value-ref="myValueBean" />
 </key>
 <ref bean="myValueBean" />
</entry>

8、组合属性名称

当设置bean的组合属性时,除了最后一下属性外,只要其他属性值不为null,组合或嵌套属性名是完全合法的。

<bean id="foo" class="foo.Bar">
 <property name="fred.bob.sammy" value="123" />
</bean>

9、depends-on属性:

depends-on属性可以用于当前bean初始化之前显式的强制一个或多个bean被初始化。

<bean id="beanOne" class="ExampleBean" depends-on="manager">
 <property name="manager" ref="manager" />
</bean>
<bean id="manager" class="ManagerBean" />

若需要表达对多个bean的依赖,可民认在<depends-on />中将指定的多个bean名字用分隔符进行分隔,分隔符可以是逗号、空格及分号等。

<bean id="beanOne" class="ExampleBean" depends-on="manager,accountDao">
 <property name="manager" ref="manager" />
</bean>
<bean id="manager" class="ManagerBean" />
<bean id="accountDao" class="x.y.jdbc.JdbcAccountDao" />

10、延迟初始化bean--lazy-init 属性:

<bean id="lazy" class="com.foo.ExpensiveToCreateBean" lazy-init="true">
 <!-- various properties here... -->
</bean>
<bean name="noo.lazy" class="com.foo.AnotherBean">
 <!-- various properties here... -->
</bean>

如 果一个bean被设置为延迟初始化,而另一个非延迟初始化的singleton bean依赖于它,那么当ApplicationContext提前实例化singleton bean时,它必须也确保所有上述singleton依赖bean也被预先初始化,当然也包括设置为延迟实例化的bean.

在容器层次中通过在<beans />元素上使用‘default-lazy-init’属性来控制延迟初始化也是可能的。
<beans default-lazy-init="true">
 <!-- no beans will be eagerly pre-instantiated... -->
</beans>

11、autowire<自动装配> 属性:

模式     说明

no      不使用自动装配,必须通过ref元素指定依赖,这是默认设置。

byName     根据属性名自动装配。Spring将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。

byType     如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配。如果存在多个,则抛出异常。

constructor    与byType的方式类似,不同之处在于它应用于构造器参数。如果在容器中未找到与构造器参数类型一致的bean,那么将抛出异常。

autodetect    通过bean类的自省机制(introspection)来决定是使用constructor还是byType方式进行自动装配。如果发现默认的构造器,那么将使用byType方式。


--通过设置<bean />元素的autowire-candidate="false",可以针对单个bean设置其是否为被自动装配对象。

12、dependency-check <依赖检查> 属性:

此属性用于检查bean定义中实际属性值的设置。

模式     说明

none     没有依赖检查,如果bean的属性没有值的话可以不用设置。

simple     对于原始类型及集合(除协作者外的一切东西)执行依赖检查。

object     仅对协作者执行依赖检查员。

all      对协作者,原始类型及集合执行依赖检查。


3.2.2. 实例化容器

Spring IoC容器的实例化非常简单,如下面的例子:
Resource resource = new FileSystemResource("beans.xml");
BeanFactory factory = new XmlBeanFactory(resource);
... 或...
ClassPathResource resource = new ClassPathResource("beans.xml");
BeanFactory factory = new XmlBeanFactory(resource);
... 或...
ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] {"applicationContext.xml", "applicationContext-part2.xml"});
// of course, an ApplicationContext is just a BeanFactory
BeanFactory factory = (BeanFactory) context;

 

Table 3.1. bean定义

名称 链接
class

Section 3.2.3.2, “实例化bean”

name

Section 3.2.3.1, “命名bean”

scope

Section 3.4, “bean的作用域”

constructor arguments

Section 3.3.1, “注入依赖”

properties

Section 3.3.1, “注入依赖”

autowiring mode

Section 3.3.6, “自动装配(autowire)协作者”

dependency checking mode

Section 3.3.7, “依赖检查”

lazy-initialization mode

Section 3.3.5, “延迟初始化bean”

initialization method

Section 3.5.1, “Lifecycle接口”

destruction method

Section 3.5.1, “Lifecycle接口”

分享到:
评论

相关推荐

    spring配置文件:整理总结Spring中XML配

    Spring的应用配置主要通过XML文件进行,这些文件通常包含了beans及其依赖关系等信息。然而,随着项目规模的增长,XML配置文件变得越来越冗长和难以管理。 本文将详细介绍关于Spring XML配置文件的12个最佳实践,...

    spring bean XML配置入门

    "spring-beans"是Spring中用于配置Bean的XML文件。该文件包含了一系列的元素,每个元素表示一个Java对象的定义,包括类名、属性值、初始化方法等。 4. **Bean的定义**: 在XML配置文件中,我们使用`&lt;bean&gt;`标签来...

    模拟spring的xml配置文件注入

    本文将深入探讨如何模拟Spring的XML配置文件注入,并通过SAXBuilder解析XML文件来实现这一过程。 首先,理解XML配置文件在Spring中的作用至关重要。XML配置文件用于声明应用程序中的bean及其依赖关系,例如类的实例...

    Spring XML配置的12个技巧

    8. 使用`&lt;import&gt;`引入其他配置:当配置文件变得庞大时,可以将相关bean分组到单独的XML文件中,然后使用`&lt;import&gt;`标签导入这些文件,保持配置结构清晰。 9. 利用`&lt;alias&gt;`创建别名:为bean创建别名可以提供多个...

    项目配置文件( spring-mvc.xml spring-mybatis.xml web.xml log4j.properties)

    通过这个配置,Spring可以管理MyBatis的SqlSession,实现数据库操作的事务控制,并且能够自动扫描和加载Mapper接口,使得SQL查询可以通过注解或者XML文件进行定义。 3. **web.xml**: 这是Web应用的部署描述符,定义...

    spring,配置文件从属性文件读取JDBC连接的相关参数

    在Spring配置文件(如`applicationContext.xml`或`beans.xml`)中,我们可以创建一个`Properties` bean来加载`jdbc.properties`: ```xml &lt;bean id="propertyConfigurer" class="org.springframework.beans....

    Spring XML 的配置实例

    Spring 框架是 Java 后端开发中的一个重要组成部分,尤其在传统的应用程序中,XML 配置文件扮演了核心角色。本实例将深入探讨 Spring 的 XML 配置机制,了解如何通过 XML 文件来管理和组织应用的组件。 XML 配置是 ...

    Spring中XML配置文件的十二个最佳方法.doc

    当配置文件过于庞大时,可以将相关bean分组到单独的XML文件中,然后通过`&lt;import/&gt;`标签导入。这有助于保持XML文件的整洁,便于管理和维护。例如: ```xml &lt;import resource="database-config.xml"/&gt; ...

    struts.xml中constent属性参数配置大全

    ### Struts.xml中Constant属性参数配置详解 #### 概述 在Struts2框架中,`struts.xml` 文件扮演着至关重要的角色,它不仅负责配置应用的基本信息,还允许开发者通过一系列的常量(constant)来定制Struts2的行为。...

    spring读取配置文件

    而`placeholder`允许你使用`${property_name}`占位符,这些值可以从属性文件(如`application.properties`)中读取,这样可以在不修改XML配置的情况下轻松更改配置。 例如,你可以在配置文件中定义一个profile: `...

    spring中的BeanFactory解析xml文件

    当我们谈论“Spring中的BeanFactory解析XML文件”时,我们实际上是在讨论如何通过XML配置文件来定义、创建和管理bean。这篇文章将深入探讨BeanFactory的工作原理,以及XML配置文件在其中的作用。 首先,BeanFactory...

    spring mvc 读取xml文件数据库配置参数的方法

    Spring MVC 读取 XML 文件数据库配置参数的方法 在 Spring MVC 框架中,配置参数的管理是一个非常重要的方面。如何将数据库配置参数存储在 XML 文件中,并在项目中读取它们,是一个棘手的问题。本文将为大家介绍...

    spring加载多个配置文件

    除了以上方法,Spring还支持通过环境变量或系统属性来指定配置文件的位置。例如,在启动时可以通过`-Dspring.config.location`命令行参数来指定。 此外,Spring Boot还提供了一种“profile”机制,可以根据不同环境...

    Spring读取配置文件原理(Spring如何依赖注入的)

    首先,Spring解析XML配置文件的过程是由`BeanDefinitionReader`完成的,它负责读取并解析XML文件,生成BeanDefinition对象。Spring提供了多种类型的BeanDefinitionReader,例如`XmlBeanDefinitionReader`,用于处理...

    spring IOC容器依赖注入XML配置

    Maven的pom.xml文件会列出所有必要的库,Maven会自动下载并管理这些库,确保项目运行时所有依赖都已就绪。 在实际应用中,Spring的XML配置文件可能包含多个bean,每个bean都有自己的配置,包括初始化方法、销毁方法...

    Spring Boot多模块配置文件读取

    - 使用`spring.config.import`属性可以导入其他配置文件,这在处理多模块项目时非常有用。 6. **使用Profile进行条件配置** - 利用Spring的Profile功能,根据运行环境选择不同的配置。 - 可以通过`spring....

    Spring通过xml实现IOC

    在早期版本的Spring中,DI主要通过XML配置文件来实现,这就是所谓的Inversion of Control Container(控制反转容器),也就是IOC。本文将深入探讨Spring如何通过XML配置实现IOC,以及其背后的原理和应用。 首先,...

Global site tag (gtag.js) - Google Analytics