春天在xml文件中配置Bean的方法

  

这篇文章主要介绍了Spring在xml文件中配置Bean的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Spring容器是一个大工厂,负责创建、管理所有的Bean。

Spring容器支持2种格式的配置文件:xml文件、properties文件,最常用的是xml文件。

Bean在xml文件中的配置


根元素,可包含多个元素,一个即一个Bean的配置。


一个即一个Bean对象。原来是new出来该类的一个对象,Spring中是一个创建一个对象。

name指定对象的名称,class指定该Bean的类,scope指定该对象的作用域。class属性是必须的,其它可选。

对象的名称可通过name或id指定,id只能指定一个名称,name可指定一个或多个名称,用逗号或分号隔开即可。示例:name="grade,score"。未指定id或name时,默认取class属性的值。

Bean的作用域

作用域说明singleton(单例)该Bean(类)在Spring容器中只有一个实例,无论引用/获取这个Bean多少次,都指向同一个对象。 singleton是Bean的默认作用域,适用于无会话状态的Bean(如Dao组建、Service组件)。prototype(原型)  每次获取该Bean时,都会创建一个新的实例。request在一次HTTP请求中,获取的是该Bean的同一个实例,该实例只在此次HTTP请求中有效。 对于不同的HTTP请求,会创建不同的实例。session在一次HTTP session中获取的是该Bean的同一个实例,该实例只在本次HTTP session中有效。globalSession在一个全局的HTTP session中,获取到的是该Bean的同一个实例。 只在使用portlet上下文时有效。application为每个ServletContext对象创建一个实例。 只在web相关的ApplicationContext中有效。websocket为每个websocket对象创建一个实例。 只在web相关的ApplicationContext中有效。

示例:singleton作用域

ClassPathXmlApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
  ,,,//获取到的这两个对象是同一个对象。
  ,,,Student 学生1=applicationContext.getBean (“student" Student.class);,,
  ,,,Student 学生二=applicationContext.getBean (“student" Student.class);
  ,,,//输出相同
  ,,,System.out.println(学生1),,
  ,,,System.out.println(学生二);

缺省范围属性时,默认就是单例作用域。

<强>示例:原型作用域

& lt; bean  name=皊tudent",类=癿y_package.Student",范围=皃rototype",/在 ClassPathXmlApplicationContext  applicationContext=new  ClassPathXmlApplicationContext (“applicationContext.xml");   ,,,//获取到的这两个对象是不同的。调用getBean()一次,就创建一个新的对象。   ,,,Student 学生1=applicationContext.getBean (“student" Student.class);   ,,,Student 学生二=applicationContext.getBean (“student" Student.class);   ,,,//输出不同   ,,,System.out.println(学生1);   ,,,System.out.println(学生二);

说明:

在xml配置文件中,一个& lt; bean>配置的是一个Bean,配置的是一个类,不是该类的一个实例(对象)。

在调用getBean()时获?引用容器中豆实例时,春容器根据id/名字找到这个Bean对应的配置,查看作用域,该重新新建这个Bean的实例就重新新建,该返回已存在的实例就返回已存在的实例。

<强> & lt; bean>的子元素——& lt; constructor-arg>

& lt; bean  name=啊?类=?“在   ,,,& lt; constructor-arg 索引/name=啊?价值/ref=啊?/比;   ,,,& lt; constructor-arg 索引/name=啊?价值/ref=啊?/比;   & lt;/bean>

& lt; constructor-arg>用于向该bean的构造函数传递参数。一个& lt; constructor-arg>传递一个参数,一个& lt; bean>可带有多个& lt; constructor-arg>子元素,根据& lt; constructor-arg>的个数调用相应的构造函数。

名称或索引指定形参,名字是用形参名指定,指数是用形参列表的下标指定(从0开始)。缺省时,默认从第一个参数开始,依次传值。

价值或裁判指定实参值,值只能指定基础类型(春容器会自动转换为对应的数据类型),裁判只能指定为其它的bean(指定为其它bean的名称或id),根据需要选用。也可以用& lt; constructor-arg>的子元素& lt; ref>或& lt; value>来指定.type属性可指定数据类型,这个属性很鸡肋,基本不用。

春天在xml文件中配置Bean的方法