Spring源码系列--BeanFactory接口注释翻译

访问spring的bean容器的根接口。是一个bean容器的最基本的客户端视图;进一步来说,ListableBeanFactory和ConfigurableBeanFactory接口可以用于特定的目的。

该接口可以被持有一些bean定义的对象们实现,这些bean被一个字符串名字唯一的标识。依赖于bean的定义,bean工厂将会返回一个包含对象的独立的实例(原型设计模式)或者一个单例的共享的实例(单例模式的优秀的替代品,在工厂范围内,实例是单例的)。返回的实例的类型将会依赖于bean工厂的配置:API也是同样的(个人理解:这句话的意思是返回得到API也依赖于bean工厂的配置)。从spring2.0开始,依赖于具体的应用上下文,提供了更多可用的作用范围(例如,在web环境中有request和session)。

要点在于,BeanFactory是应用组件的注册中心,并且集中了应用组件的配置(例如,不需要额外的对象来读取属性文件)。可以阅读Expert One-on-One J2EE Design and Development一书的第四节和第11节关于这种方法益处的讨论。

记住,与使用任何形式的例如BeanFactory查找这样的拉取配置的方式相比,依赖于依赖注入来使用setter方法或者构造器来配置应用对象通常是更好的(push配置)。spring的依赖注入功能可以使用BeanFactory接口和它的子接口来实现。

正常来说,一个BeanFactory会载入储存在配置源中的bean定义,然后使用beans包来配置这些bean。然而,一个实现可以按照需要在JAVA代码中直接返回它所创造的java对象。而定义是如何存储的则没有约束:LDAP,RDBMS,XML,属性文件等等均可。在beans当中鼓励bean之间相互引用。


与ListableBeanFactory中的方法相比,如果该接口是一个HierarchicalBeanFactory,那么该接口的所有操作都会检查父工厂。如果一个bean在这个工厂实例中没有发现,那么就会立即请求父工厂,在工厂实例中的bean会覆盖任何同名的父工厂中的bean。


bean工厂的实现应该尽可能地支持标准的bean周期接口的实现。下面是全部的初始化方法集合和他们的标准顺序:


  1. BeanNameAware’s {@code setBeanName}
  2. BeanClassLoaderAware’s {@code setBeanClassLoader}
  3. BeanFactoryAware’s {@code setBeanFactory}
  4. EnvironmentAware’s {@code setEnvironment}
  5. EmbeddedValueResolverAware’s {@code setEmbeddedValueResolver}
  6. ResourceLoaderAware’s {@code setResourceLoader}
    (only applicable when running in an application context)
  7. ApplicationEventPublisherAware’s {@code setApplicationEventPublisher}
    (only applicable when running in an application context)
  8. MessageSourceAware’s {@code setMessageSource}
    (only applicable when running in an application context)
  9. ApplicationContextAware’s {@code setApplicationContext}
    (only applicable when running in an application context)
  10. ServletContextAware’s {@code setServletContext}
    (only applicable when running in a web application context)
  11. {@code postProcessBeforeInitialization} methods of BeanPostProcessors
  12. InitializingBean’s {@code afterPropertiesSet}
  13. a custom init-method definition
  14. {@code postProcessAfterInitialization} methods of BeanPostProcessors

向以下三位开发者致敬:

  • @author Rod Johnson
  • @author Juergen Hoeller
  • @author Chris Beams
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值