`
zhanshenlvbu
  • 浏览: 111411 次
社区版块
存档分类
最新评论

Spring中bean的基本xml配置

阅读更多

Spring中bean的基本xml配置

 

  在spring容器内拼凑bean叫作装配。装配bean的时候,你是在告诉容器,需要哪些bean,以及容器如何使用依赖注入将它们配合在一起。
  理论上,bean装配可以从任何资源获得,包括属性文件,关系数据库等,但xml是最常见的spring 应用系统配置源。Spring中的几种容器都支持使用xml装配bean,包括:
       XmlBeanFactory ,
       ClassPathXmlApplicationContext ,
       FileSystemXmlApplicationContext ,
       XmlWebApplicationContext

 

  基本的xml配置包括如下几个方面:

         1.添加一个bean
         2.设置bean的属性
            2.1 手动设置
                2.1.1 通过Setter方法
                2.1.2 通过构造器
            2.2 自动设置

  其中bean的属性即为bean里的成员变量,这些成员变量值的获得可以通过setter方法,例如某个属性为name,则setter方法为setName(String name);或者通过构造器在类被实例化时初始化。Setter方法(例如setName方法)或者构造器的调用都可以通过在xml文件里进行配置,从而实现让spring容器来自动进行。

 

1.添加一个bean


        以下是一个例子:

<bean id=“mybean” Class=“blog.spring.MyBean” Singleton=“false” init-method="initMethod" destroy-method=“destroyMethod” autowire=“autowire type”/> 

        下面是对该标签里各个属性的解释:
        Id : 标识该bean的名称,通过factory.getBean(“id”)来获得实例。
        Class : 该bean的类路径。
        Singleton : 默认为true,即单实例模式,每次getBean(“id”)时获取的都是同一个实例,如果设置为false,即原型模式,则每次获取的是新创建的实例。
        Init-method : 在bean实例化后要调用的方法(bean里定义好的方法)。
        Destroy-method : bean从容器里删除之前要调用的方法。
        Autowire : 其属性要通过何种方法进行属性的自动装配。
        对于上述的各个属性,id和class是必要的,其他的则可以省略。例如如果设置了autowire的值,则表明需要自动装配,否则是手动装配。

 

2.通过Setter方法手动设置bean里的属性


        Bean里的属性通过<property>标签来标识。有以下几种情况:


  ● 简单类型属性

<bean id = “mybean” class = “blog.spring.MyBean”>
  <property name = “name”>
    <value>springTest</value>
  </property>
</bean>
  

  ● 引用其他bean

<bean id = “mybean” class = “blog.spring.MyBean” />
<bean id = “mybean1” class = “blog.spring.MyBean1”>
  <property name = “name”>
    <ref bean = “mybean” />
  </property>
</bean>

  也可以将<ref>改为    <bean class = “..”>

  这样叫做内部bean,缺点是无法在其他地方重用这个bean的实例。

 

  ● 装配集合

 

        共有以下几种集合的装配:

 ****装配List和数组****
<property name = "nameList">
  <list>
    <value>something</value>
      <ref bean = “blog.spring.MyBean” />
    <value>otherThing</value>
  </list>
</property>

****装配Set****
<property name = ”nameList”>
  <set>
    <value>something</value>
      <ref bean = “blog.spring.MyBean” />
    <value>otherThing</value>
  </set>
</property>

****装配Map****
<property name = ”nameList”>
  <map>
    <entry key = “key1”>
      <value>value1</value>
    </entry>
    <entry key = “key2”>
      <ref bean = “mybean” />
    </entry>
  </map>
</property>

****装配Properties****
<property name = ”nameList”>
  <props>
    <prop key = “prop1”>value1</prop>
    <prop key = “prop2”>value2</prop>
  </props>
</property>

        ● 设置null
        要将一个属性null,需要通过<null />标签,如果不设置,则属性为默认值(在实例化时)而不是null。

<property name=”name”> <null /></property>


  3.通过构造器手动设置bean里的属性
     

        假设有如下一个bean:

public class MyBean
{
  public MyBean( String arg1, MyBean1 arg2, String arg3 )
}

 

        则可以在xml里这样配置该bean:

<bean id = “mybean” class = “blog.spring.MyBean”>
  <constructor-arg index = “1”>
    <value>springTest</value>
  </constructor-arg>
  <constructor-arg index = “0”>
  <ref bean = “mybean1” />
  </constructor-arg>
</bean>

        其中的index是用来标识该参数在构造函数里的位置的,并从0开始。

 

  4.让spring完成自动装配


        例如:

<bean id = “mybean” class = “blog.spring.MyBean” autowire = “autowire type”/>

        下面是几种autowire type的说明:
            ● byname : 试图在容器中寻找和需要自动装配的属性名相同的bean或id,如果没有找到相应的bean,则这个属性未被装配上。
            ● byType : 试图在容器中寻找一个与需要自动装配的属性类型相同的bean或id,如果没有找到,则该属性未被装配上。
            ● constructor : 试图在容器中寻找与需要自动装配的bean的构造函数参数一致的一个或多个bean,如果没找到则抛出异常。
            ● autodetect : 首先尝试使用constructor来自动装配,然后再使用byType方式。

 

        从上面可以看出,如果某个bean不手动设置autowire属性,则默认为手动装配。如果需要将所有bean都设置为自动装配时,可以通过在<beans>标签中设置default-autowire属性。<beans>标签是整个xml文档的根,在它下面就是一个个的<bean>。其中default-autowire的值也有byName,byType,constructor,autodetect四种。

 

        例如配置如下:

<beans default-autowire = “byName”> ... </beans>

        自动装配可能带来不确定性问题。例如使用byType时可能同时发现两个相同的类型,则不知道该采用哪一个。所以可能混合采用自动和手动装配。例如,对某个bean设置为自动装配,而对其某个属性则手动明确的设置其值,例如:

<bean id = “mybean” class = “blog.spring.MyBean” Autowire = “byType”>
  <property name = “name”>
    <ref bean = “myBean1”>
  </property>
</bean>

        通过这样的配置,对mybean里的name属性进行手动装配,而对除name外的其他属性就进行自动装配。

 

分享到:
评论

相关推荐

    spring bean XML配置入门

    在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...

    Spring的Bean配置

    在本文中,我们将深入探讨Spring中的Bean配置,包括IoC和DI的概念,Bean的配置方式,以及不同类型的IOC容器。 **Spring的Bean配置**: 在Spring中,Bean是应用中的对象,它们由Spring IoC容器负责创建、管理和装配...

    spring和Mybatis的xml配置文件提示约束包

    "spring和Mybatis的xml配置文件提示约束包"这个主题,主要是关于在XML配置文件中使用的DTD(Document Type Definition)文档类型定义,它为XML文件提供了结构约束和语法规范。 DTD是一种元语言,用于定义XML文档的...

    SSH三大框架整合 struts2(使用xml配置)+hibernate(使用xml配置)+spring(使用xml配置)

    Spring的XML配置文件(如applicationContext.xml)用于声明bean及其依赖。通过@Autowired注解或XML配置,Spring可以自动装配bean,实现依赖注入。同时,Spring还提供了AOP(面向切面编程)支持,用于添加如日志、...

    Spring注册Bean(XML).xmind

    Spring注册Bean(XML)

    模拟spring的xml配置文件注入

    在Spring框架中,XML配置文件是核心组成部分,它定义了bean的实例化、依赖注入以及其他的框架设置。本文将深入探讨如何模拟Spring的XML配置文件注入,并通过SAXBuilder解析XML文件来实现这一过程。 首先,理解XML...

    SPRING:bean配置properties

    在Spring框架中,Bean的配置与管理是其核心功能之一,而通过`PropertyPlaceholderConfigurer`进行属性占位符的配置则是实现动态配置的关键技术。本文将深入解析如何利用`PropertyPlaceholderConfigurer`进行bean配置...

    31. Spring Boot导入XML配置【从零开始学Spring Boot】

    在本篇【从零开始学Spring Boot】系列教程中,我们将深入探讨如何在Spring Boot项目中导入并使用XML配置。Spring Boot以其简化Spring应用的初始搭建以及开发过程而闻名,通常推崇的是Java配置而非XML配置。然而,在...

    spring bean的生命周期

    - **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...

    Spring装配Bean教程之XML安装配置bean详解

    在Spring框架中,XML配置是早期最常用的配置方式,它提供了详细且灵活的方式来定义和管理Bean的生命周期。本文将深入探讨Spring如何通过XML配置来装配Bean。 首先,要创建XML配置,你需要创建一个新的XML文件,通常...

    spring无web.xml零配置

    在现代的Spring框架开发中,"spring无web.xml零配置"是一种常见的实践,它通过Java配置(javaconfig)替代了传统的XML配置方式。这种方式使得应用更加灵活,代码更易于理解和维护。下面我们将深入探讨这个主题。 ...

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

    ### Spring配置文件:整理与总结Spring中XML配置的最佳实践 #### 概述 Spring框架作为一个强大的Java应用框架,在企业级应用开发中占据了重要的地位。它为普通的Java对象(Plain Old Java Objects, POJOs)提供了...

    详解Spring中Bean的生命周期和作用域及实现方式

    1. 使用XML配置文件:可以在XML配置文件中配置Bean的生命周期和作用域。 2. 使用Annotation配置:可以使用Annotation来配置Bean的生命周期和作用域。 3. 使用Java配置:可以使用Java代码来配置Bean的生命周期和作用...

    spring 重新动态加载数据库或xml中的bean,可以不用重启tomcat

    spring 重新动态加载数据库或xml中的bean,可以不用重启tomcat

    Spring-hibernate结合使用全xml配置方式

    Spring框架提供了IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)等核心特性,通过XML配置文件管理Bean的生命周期和依赖关系。Hibernate则是一个强大的ORM框架,能够将...

    spring中的bean

    在本篇中,我们将深入探讨"Spring中的Bean"这一主题,包括Bean的定义、配置以及如何在实际应用中使用。 首先,我们需要理解什么是Spring中的Bean。在Spring中,Bean通常代表应用程序中的一个对象,这些对象由Spring...

    Spring定义bean的三种方式和自动注入

    在Spring框架中,管理Bean的方式主要有三种:XML配置、注解配置和Java配置。下面将详细介绍这三种方式以及Spring的自动注入机制。 1. **基于XML的Bean定义**: 在XML配置中,我们通常在`applicationContext.xml`...

    详解Spring中使用xml配置bean的细节

    Spring 中使用 XML 配置 Bean 的细节 Spring 框架中使用 XML 配置 Bean 是一种常见的方式,它可以帮助开发者轻松地管理 Bean 的依赖关系和生命周期。在本文中,我们将详细介绍 Spring 中使用 XML 配置 Bean 的细节...

    Spring XML配置的12个技巧

    Spring XML配置是Spring框架中的一种常见方式,用于定义和管理应用程序中的bean及其依赖关系。以下是对Spring XML配置的12个技巧的详细说明: 1. 避免使用自动装配:Spring提供了自动装配功能,通过匹配bean属性或...

Global site tag (gtag.js) - Google Analytics