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”

除了xml配置文件,ApplicationContext的实现类还允许在容器外注册已经存在的对象:通过getBeanFactory()方法获得DefaultListableBeanFactory。    DefaultListableBeanFactory支持通过registerSingleton(..)和registerBeanDefinition(..)来实现。

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;
  }
}

Spring3.0官网文档学习笔记(五)--3.3,布布扣,bubuko.com

时间: 2024-10-10 07:03:19

Spring3.0官网文档学习笔记(五)--3.3的相关文章

Spring3.0官网文档学习笔记(六)--3.4.1

3.4 依赖 3.4.1 依赖注入 依赖注入两种方式:基于构造器的DI.基于setter方法的DI. 3.4.1.1 基于构造器的DI 参数是引入对象,且之前不存在父-子类关系: package x.y; public class Foo { public Foo(Bar bar, Baz baz) { // ... } } <beans> <bean id="foo" class="x.y.Foo"> <constructor-arg

Spring3.0官网文档学习笔记(七)--3.4.2

3.4.2 依赖与配置的细节 3.4.2.1  Straight values (primitives, Strings, and so on) JavaBeans PropertyEditors被用来转换这些value到实际的类型.? <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <

Spring3.0官网文档学习笔记(四)--3.1~3.2.3

3.1 Spring IoC容器与Beans简介 BeanFactory接口提供对任意对象的配置: ApplicationContext是BeanFactory的子接口,整合了Spring Aop功能,消息资源控制,事件发布,应用层特殊的上下文(在web应用中) 由IoC容器实例化.组装.管理的对象都是Bean 3.2 容器概述 org.springframework.context.ApplicationContext代表Spring IoC容器,并且负责通过读取配置元数据来实例化.配置.组装

Spring3.0官网文档学习笔记(八)--3.4.3~3.4.6

3.4.3 使用depends-on 使用depends-on可以强制使一个或多个beans先初始化,之后再对这个bean进行初始化. 多个bean之间用",".";"." "隔开. <bean id="beanOne" class="ExampleBean" depends-on="manager"/> <bean id="manager" cla

Spring3.0官网文档学习笔记(二)

1.3 使用场景 典型的成熟的spring web应用 spring使用第三方框架作为中间层 远程使用场景 EJB包装 1.3.1 依赖管理.命名规则(包) spring-*.jar *号代表的是模块的简写,如:spring-core, spring-webmvc, spring-jms 可以在四个不同的地方找到Spring: http://www.springsource.org/downloads/community  所有的jar包被打包成zip,名称从3.0开始是: org.spring

Spring3.0官网文档学习笔记(一)

Part 1 Spring框架概述 Spring是模块化的,在应用中只需要引入你所需要用到的模块的jar包,其余的jar包不用引入. spring框架支持声明式的事务管理,通过RMI或web service访问你的逻辑,还有许多种方式保存数据. spring被设计成非侵入式的. 1.Spring框架简介 Spring框架提供了应用开发的基础部分,使得我们可以集中精神在业务开发层上. POJOS:plain old Java objects Spring允许创建非侵入式的POJO.这个特性支持Ja

Hibernate 官网文档学习记录

这篇博客主要记录看官方文档时,学习到的要点内容 1.关于XXX.hbm.xml的配置 1)property元素中的type属性值不是java类型也不是sql type类型,是hibernate自己的映射类型.该属性值可以省略,hibernate会在启动的时候通过反射自动的将java类型和sql type类型匹配起来,但有时候会得不到期望的类型,比如java 的util包下的Date类型不知道是转为sql type中的data,time还是timeStamp类型.如果希望启动程序的时候效率高些,建

UGUI官网文档重温笔记——Animation Integration

Unity推荐使用Animator动画来制作UGUI控件的动画效果.先制作好UI控件的Animation片段,然后为控件添加相应的Animator以及过渡参数,控制参数即可控制动画的播放. 例如在一个Button中, 此处将Transition(过渡转换)属性设置为:Animation,然后点击"Auto Generate Animation",即可自动添加带有四个参数的Animator, Unity已经自动添加并设置好带有四个参数的动画状态机.此时只需按下Ctrl+6,单独编辑Nor

mongodb官网文档阅读笔记:write concern

write concern保证了mongodb写操作的级别,不同的write concern设置对应了不同级别的写操作,设置的级别越高,那么写操作的性能的持久化做得越好,但是写性能也就越差.mongodb默认采用 Acknowledged的write concern级别,这也是安全性最高的级别. 在 Acknowledged级别的副本集模式下,mongodb可在客户端设置一个wtimeout值,如果在规定的时间内无法完成这个写操作就返回一个错误,即使它最终可能能够完成. Write Concer