Spring XML Bean 标签基本属性
1. 标签属性介绍:
- id
bean 名称,默认为 类名;
- class
被代理类的 class;
- name:
相当于 alias,bean 别名,多个别名用 ‘,’ 隔开;
- parent:
首先 parent 并不指 bean 对象的继承关系,它是指的是 标签的继承关系,既一个 标签可以通过 parent 继承到另一个 标签的所有数据,避免一些重复数据的重复书写;
- scope:
作用域,表示这个 bean 的作用范围,默认有 singleton,prototype,表示 单例和多例,Spring Web 容器又增加了 request、session、global-session 三个作用域;
singleton(default) | 单例 |
---|---|
prototype | 多例 |
request | 每一个 HTTP 请求对应着一个 bean |
session | 每个 session 对应着一个新的 bean 对象 |
global-session | global session只有应用在基于porlet的web应用程序中才有意义,它映射到porlet的global范围的session,如果普通的servlet的web 应用中使用了这个scope,容器会把它作为普通的session的scope对待。 |
- abstract:
true or false,表示这个 是否是一个抽象的、不能被实例化的 bean,一般来说我们可以结合 实现对公共 配置数据的提取;
- lazy-init:
true or false,是否延迟加载;
- depends-on:
这个 Bean 会依赖到的bean,bean 在初始化的时候,会判断 depends-on 是否被初始化,如果没有,则优先初始化 depends-on 的bean;
- autowire:
自动注入方式,no(默认)、byName、byType、constructor、autodetect;默认no 不会进行属性的注入;constructor 还是走的 byName,但它是通过 constructor 进行的注入;autodetect 如果有默认的构造方法,通过 construct的方式自动装配,否则使用 byType的方式自动装配;
- autowire-candidate:
true or false,默认为 true,如果 的 autowire-candidate属性设置为 false,则其他 bean 属性注入的时候,不会考虑这个 bean。
- primary:
true or false,默认 false,如果 的 primary 为 true,并且同个 bean 的类型存在多个,自动注入的时候,就会选择 primary 为 true 的bean;
- init-method:
初始化方法,当 bean 被创建之后,spring 会调用 invokeInitMethods 执行初始化方法;
- destroy-method:
通过 spring 销毁 bean 的时候,会执行 destroy-method 方法;
- factory-method:
创建 bean 的工厂方法,该方法有两种形式,一种静态方法,如下所示:
<bean id="stu" class="com.bin.pojo.StuDO" factory-method="getStuDo"/>
public static StuDO getStuDo() {
StuDO stu = new StuDO();
stu.id = idBuilder++;
return stu;
}
另一种是使用普通方法做为 bean factory,但它需要集合 factory-bean 来使用,既指定一个 为 bean 工厂:
<bean id="stu" factory-bean="stuOne" factory-method="getStuDo"/>
- factory-bean:
如上所示,表明这个 bean 是一个 工厂bean
2. 子标签:
- property:
bean 的一些基本属性;
- constructor-arg:
构造方法注入 数据
- lookup-method:
方法重写,,指定要从写的方法名,和返回的 bean,通过 lookup-method 返回的 bean,是一个多例 bean,这样我们也就可以在一个单例 bean 中获取一些多例的 bean;
- replaced-method:
, lookup-method 一样,它也是方法重写,但不用点在于,replace-method 的 bean 必须实现 MethodReplacer 接口;
- qualifier:
当通过类型注入的时候,会存在多个类型一致的 bean,这时候我们可以通过 qualifier 利用名字进行注入;
- meta:
类的元数据;