欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Spring基于xml文件配置Bean过程详解

程序员文章站 2022-06-20 12:46:52
这篇文章主要介绍了spring基于xml文件配置bean过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过全类名来配置:...

这篇文章主要介绍了spring基于xml文件配置bean过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

通过全类名来配置:

class:bean的全类名,通过反射的方式在ioc容器中创建bean,所以要求bean中必须有一个无参的构造器。

  <bean id="helloworld" class="com.gong.spring.beans.helloworld">
    <property name="name" value="jack"></property>
  </bean>

在springioc容器读取bean配置创建bean的实例之前,需要对容器进行实例化。spring提供了两种类型的ioc容器实现:

beanfactory:ioc容器的基本实现。

applicationcontext:提供了更多高级特性,是beanfactory的子接口。

applicationcontext主要实现类:

  • classpathxmlapplicationcontext:从类路径加载配置文件。
  • filesystemxmlapplicationcontext:从文件系统中加载配置文件。
  • configureableapplicationcontext扩展于applicationcontext,新增两个方法refresh()和close(),让applicationcontext具有启动、刷新和关闭上下文的能力。

applicaiotncontex在初始化时就上下文时就实例化所有单例的bean。

webapplicationcontext是专门用于web应用的,它允许从相对于web根目录的路径中完成初始化工作。

依赖注入的三种方式

(1)属性注入:通过setter方法:<property name="name" value="jack"></property>,即在bean中存在setter方法。

(2)构造器注入:<constructor-arg value="" index="0" type=""></constructor-arg>,根据构造方法中初始化的参数进行一一设置,同时,可以根据参数的顺序index,参数的类型type来区分重载的构造器。

(3)工厂方法注入(很少使用,不推荐)

<bean id="student" class="com.gong.spring.beans.student">    //第一种方式注入属性值
    <constructor-arg value="tom" index="0" type="java.lang.string"></constructor-arg>
    <constructor-arg value="12" index="1" type="int"></constructor-arg>    //第二种方式注入属性值
    <constructor-arg index="2" type="double">
      <value>99.00</value>
    </constructor-arg>
  </bean>
package com.gong.spring.beans;

public class student {
  private string name;
  private int age;
  private double score;
  public student(string name,int age,double score) {
    this.name = name;
    this.age = age;
    this.score = score;
  }
  @override
  public string tostring() {
    return "student [name=" + name + ", age=" + age + ", score=" + score + "]";
  }
  
}
public static void main(string[] args) {
    //1.创建spring的ioc容器对象
    applicationcontext ctx = new classpathxmlapplicationcontext("applicationcontext.xml");
    //2.从容器中获取bean实例
    student student = (student) ctx.getbean("student"); 
    system.out.println(student.tostring());
  }

输出:

Spring基于xml文件配置Bean过程详解

当属性值有特殊符号时,要用以下方式:

    <constructor-arg index="0" type="java.lang.string">
      <value><![cdata[<tom>]]></value>
    </constructor-arg>

用<![cdata[属性值]]>。