Spring Bean介绍

Spring Bean介绍

一个Spring IoC容器管理一个或者多个beans。这些beans依据你填充在容器中的元数据配置创建,如以XML中的

Bean命名

每个bean都有一个或者多个标识符,这些标识符在容器中都必须是惟一的。通学一个bean仅有一个标识符,但是如果需要多个,其他的则可以使用别名(aliases)。

在基于XML的元数据配置,你可以使用id或者name属性来指定bean的标识符。id属性只允许明确的指定一个bean标识符,如果想要给bean指定多个别名,则可以在name属性中指定他们,以逗号或者分号或者空格分隔。如果ID和name不指定,则容器自动生成。

同进还可以在bean定义之外给bean起别名,如下:

<alias name="fromName" alias="toName"/>

实例化beans

一个bean定义本质上是创建一个或者多个对象的图谱,当请求bean实例时容器查找对应名字的bean定义,依据bean定义组装或者创建一个真正的对象。

如果使用的是基于XML的配置,你可以通过bean标签的class属性指定bean定义所要初始化的对象类型(type或者class),此class属性在BeanDefinition实例内部是一个Class类型的属性,是必须指定的。

普通bean实例化

对于一般的bean,如下定义即可正常初始化:

<bean id="exampleBean" class="examples.ExampleBean"/>

<bean name="anotherExample" class="Examples.ExampleBeanTwo"/>

通过静态工厂方法实例化bean

当定义一个由静态工厂方法创建的bean定义时,你需要给bean标签的class属性指定含有静态工厂方法的类的类名,同时给bean标签的factory-method属性指定创建实例所用的方法(必须为静态方法)。如下是通过createInstance方法实例化一个对象:

<bean id="clientService" class="examples.ClientService" factory-method="createInstance"/>

对应工厂如下:

public class ClientService{
    private static ClientService clientService = new ClientService();

    private ClientService(){}

    public static ClientService createInstance(){
        return clientService;
    }
}   

通过实例工厂方法实例化Bean

同静态工厂方法类似,不同之处再于实例化工厂方法时需先定义工厂的初始化定义,然后定义需要创建bean的定义如下:

<!-- 工厂定义 -->
<bean id="serviceLocator" class="examples.DefaultServiceLocator"/>

<bean id="clientService" factory-bean="serviceLocator" factory-method="createClientServiceInstance"/>

<bean id="accountService" factory-bean="serviceLocator" factory-method="createAccountServiceInstance"/>

对应工厂如下:

public class DefaultServiceLocator{
    private static ClientService clientService = new ClientServiceImpl();
    private static AccountService accountService = new AccountServiceImpl();

    private DefaultServiceLocator(){}

    public ClientService createClientServiceInstance(){
        return clientService;
    }

    public AccountService createAccountServiceInstance(){
        return accountService;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值