首页 > 代码库 > Spring3.0官网文档学习笔记(五)--3.3
Spring3.0官网文档学习笔记(五)--3.3
3.3 概述
Table 3.1. The bean definition
Property | Explained in... |
---|---|
class | Section 3.3.2, “Instantiating beans” |
name | Section 3.3.1, “Naming beans” |
scope | Section 3.5, “Bean scopes” |
constructor arguments | Section 3.4.1, “Dependency injection” |
properties | Section 3.4.1, “Dependency injection” |
autowiring mode | Section 3.4.5, “Autowiring collaborators” |
lazy-initialization mode | Section 3.4.4, “Lazy-initialized beans” |
initialization method | Section 3.6.1.1, “Initialization callbacks” |
destruction method | Section 3.6.1.2, “Destruction callbacks” |
3.3.1 命名beans
一个bean通常只有一个标示符(id),但是可以拥有多个别名(name)。可以通过使用“,”、“;”、“ ”来为name定义多个别名。
bean不一定要有一个name或者一个id,如果都没有配置的话,spring默认为这个bean生成一个唯一的名字。但是如果要通过ref属性或Service Location来引用的话,必须提供一个名字。什么都不配置的情况通常是用在inner beans和autowiring collaborators。
3.3.1.1 bean定义之外的别名
通过<alias/>标签可以为同一个bean定义不同的别名
<alias name="subsystemA-dataSource" alias="subsystemB-dataSource"/> <alias name="subsystemA-dataSource" alias="myApp-dataSource" />3.3.2 实例化beans
实例化beans有两种方法:
1、在class属性配置类,相当于使用new去实例化;
2、使用工厂创建
3.3.2.1 用构造器初始化
必须拥有一个默认的构造器(有配置构造器参数的除外)
内部类的class:com.example.Foo有个内部类Bar,那么Bar的对应的class属性配置为com.example.Foo$Bar
3.3.2.2 使用静态工厂方法初始化
<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; } }3.3.2.3 通过实例化一个工厂方法来初始化
<!-- the factory bean, which contains a method called createInstance() --> <bean id="serviceLocator" class="examples.DefaultServiceLocator"> <!-- inject any dependencies required by this locator bean --> </bean> <!-- the bean to be created via the factory bean --> <bean id="clientService" factory-bean="serviceLocator" factory-method="createClientServiceInstance"/>
public class DefaultServiceLocator { private static ClientService clientService = new ClientServiceImpl(); private DefaultServiceLocator() {} public ClientService createClientServiceInstance() { return clientService; } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。