Bean的概述

Bean概述

Spring IoC容器的目的就是管理Bean,Bean根据配置文件中的定义创建。在容器内,Bean的定义用BeanDefinition对象表示,定义主要包含以下信息:

  • 全限定类名
  • Bean的行为:作用域(单例,原型),惰性初始化,生命周期等。
  • Bean创建方式:通过构造器还是工厂创建Bena
  • Bean之间的关系定义:依赖关系定义,即对其他Bean的引用。

1、xml配置文件

<!--配置文件模板-->
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="..." class="...">
        <!-- collaborators and configuration for this bean go here -->
    </bean>
</beans>

2、Bean命名

在XML中使用id或者name属性来指定标识符。id是唯一的,如果使用了name属性则视作别名,name属性也可以指定多个名称,用逗号分隔。如果没有指定任何标识符,Spring会自动生成一个唯一的标识符。

<bean id="..." name="..." />

alias指定别名

除了直接在属性中指定之外,还可以使用<alias></alias>标签来定义别名。

<alias name="UserBean" alias="systemA-UserBean" />
<alias name="UserBean" alias="systemB-UserBean" />
<!--
这种方式通常在大型系统中使用,主要目的是在每个子系统之间分配,让每个子系统拥有自己的一组对象定义。	
-->

3、实例化bean

基于构造器实例化bean

1、空构造器,指定的类必须存在无参构造

<bean id="UserBean" class="com.project.bean" />
<bean name="UserBean" class="com.project.bean" />

2、带参的构造器
注意索引下标是从0开始

<!-- 
index:参数的位置,从0开始
value:常量值
如果参数是一个引用则使用`ref`
 <constructor-arg  ref = “baz” /> 
-->
<bean id="userbean" class="com.project.bean.UserBean">
	<constructor-arg index="0" value="李刚"/>
</bean>

基于静态工厂实例化

使用静态工厂,class需要指定工厂类,和factory-method属性指定方法,同时静态工厂也可以指定参数。

//静态工程类
public class StaticFactory {
    public static UserBean newInstance(String name) {
        return new UserBean(name);
    }
}
<!-- 使用静态工厂方法  -->
<bean id="userbean" class="com.project.util.StaticFactory" factory-method="newInstance">
	<constructor-arg index="0" value="Hello Spring!"/> 
</bean> 

基于实例工厂实例化

普通工厂的使用基本相同,class属性换成factory-bean(不是指定类了,是指定容器中bean的名称 )。

<!-- 先定义实例工厂bean -->
<bean id="InsFactory" class="com.project.util.InsFactory"></bean> 
    <!-- 使用实例化工厂类 -->
<bean id="userbean3" factory-bean="InsFactory" factory-method="newInstance">
	<constructor-arg index="0" value="Hello Spring!"/> 
</bean> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值