做网站用的,品牌营销增长新参考价格,小程序开发公司米云,关于动物自己做的网站BeanFactory 访问Spring bean容器的根接口。 这是bean容器的基本客户端视图;例如{link ListableBeanFactory}和{link org.springframework.beans.factory.config。ConfigurableBeanFactory}可用于特定目的。 这个接口是由包含许多bean定义的对象实现的#xff0c;每个bean定义…
BeanFactory 访问Spring bean容器的根接口。 这是bean容器的基本客户端视图;例如{link ListableBeanFactory}和{link org.springframework.beans.factory.config。ConfigurableBeanFactory}可用于特定目的。 这个接口是由包含许多bean定义的对象实现的每个bean定义由一个String名称唯一标识。根据bean定义工厂将返回所包含对象的独立实例(Prototype设计模式)或单个共享实例(Singleton设计模式的高级替代方案其中实例是工厂范围内的单例)。返回哪种类型的实例取决于bean工厂配置:API是相同的。从Spring 2.0开始根据具体的应用程序上下文(例如:web环境中的“请求”和“会话”作用域)。 这种方法的要点在于BeanFactory是应用程序组件的中心注册中心并集中应用程序组件的配置(例如单个对象不再需要读取属性文件)。请参阅“专家一对一J2EE设计与开发”的第4章和第11章了解这种方法的好处。 请注意通常最好依赖依赖注入(“推送”配置)通过setter或构造函数来配置应用程序对象而不是使用任何形式的“拉”配置如BeanFactory查找。Spring的依赖注入功能是使用这个BeanFactory接口及其子接口实现的。 请注意通常最好依赖依赖注入(“推送”配置)通过setter或构造函数来配置应用程序对象而不是使用任何形式的“拉”配置如BeanFactory查找。Spring的依赖注入功能是使用这个BeanFactory接口及其子接口实现的。 通常BeanFactory将加载存储在配置源(如XML文档)中的bean定义并使用{code org.springframework。Beans}包来配置bean。但是实现可以根据需要直接在Java代码中返回它创建的Java对象。对于如何存储定义没有任何限制:LDAP、RDBMS、XML、属性文件等。鼓励实现支持bean之间的引用(依赖注入)。 与{link ListableBeanFactory}中的方法相反如果这是{link HierarchicalBeanFactory}该接口中的所有操作也将检查父工厂。如果在这个工厂实例中没有找到bean将询问直接的父工厂。这个工厂实例中的bean应该覆盖任何父工厂中同名的bean。 Bean工厂实现应该尽可能地支持标准的Bean生命周期接口。初始化方法的完整集合及其标准顺序为:
BeanNameAware的{code setBeanName} BeanClassLoaderAware的{code setBeanClassLoader} BeanFactoryAware的{code setBeanFactory} EnvironmentAware的{code setEnvironment} EmbeddedValueResolverAware的{code setEmbeddedValueResolver} ResourceLoaderAware的{code setResourceLoader}(仅适用于在应用程序上下文中运行时)ApplicationEventPublisherAware的{code setApplicationEventPublisher}(仅适用于在应用程序上下文中运行时)MessageSourceAware的{code setMessageSource}(仅适用于在应用程序上下文中运行时)ApplicationContextAware的{code setApplicationContext}(仅适用于在应用程序上下文中运行时)ServletContextAware的{code setServletContext}(仅适用于在web应用程序上下文中运行时) BeanPostProcessors的InitializingBean的{code afterPropertiesSet} 自定义初始化方法定义 在关闭bean工厂时应用以下生命周期方法: DestructionAwareBeanPostProcessors {code postProcessBeforeDestruction}方法DisposableBean的{code destroy} 一个自定义的销毁方法定义 ListableBeanFactory {link BeanFactory}接口的扩展由可以枚举所有bean实例的bean工厂实现而不是像客户端请求的那样逐个按名称进行bean查找。预加载所有bean定义(如基于xml的工厂)的BeanFactory实现可以实现这个接口。 如果这是一个{link HierarchicalBeanFactory}返回值将不考虑任何BeanFactory层次结构而只与当前工厂中定义的bean相关。使用{link BeanFactoryUtils} helper类也可以考虑祖先工厂中的bean。 这个接口中的方法将只尊重这个工厂的bean定义。它们将忽略任何通过其他方式(如{link org.springframework.beans.factory.config)注册的单例bean。除了{code getBeanNamesForType}和{code getBeansOfType}之外ConfigurableBeanFactory}的{code registerSingleton}方法也会检查这种手动注册的单例。当然BeanFactory的{code getBean}也允许对这种特殊bean进行透明访问。然而在典型的场景中所有bean都将由外部bean定义定义因此大多数应用程序不需要担心这种差异。 注意:除了{code getBeanDefinitionCount}和{code containsBeanDefinition}之外该接口中的方法不是为频繁调用而设计的。实现可能很慢。 HierarchicalBeanFactory 由bean工厂实现的子接口可以是层次结构的一部分。 对应的{code setParentBeanFactory}方法可以在ConfigurableBeanFactory接口中找到该方法允许以可配置的方式设置父节点。 AutowireCapableBeanFactory {link org.springframework.beans.factory的扩展。接口BeanFactory}将由能够自动装配的bean工厂实现前提是它们希望为现有bean实例公开此功能。 BeanFactory的这个子接口不打算在普通的应用程序代码中使用:坚持使用{link org.springframework.beans.factory。或者{link org.springframework.beans.factory。ListableBeanFactory}用于典型用例。其他框架的集成代码可以利用这个接口来连接和填充Spring不控制其生命周期的现有bean实例。例如这对于WebWork Actions和Tapestry Page对象特别有用。 注意这个接口不是由{link org.springframework.context实现的。ApplicationContext} facade因为它很少被应用程序代码使用。也就是说它也可以从应用程序上下文获得可以通过ApplicationContext的{link org.springframework.context.ApplicationContextgetAutowireCapableBeanFactory()}方法访问。 你也可以实现{link org.springframework.beans.factory。接口即使在ApplicationContext中运行也会公开内部的BeanFactory以访问AutowireCapableBeanFactory:只需将传入的BeanFactory转换为AutowireCapableBeanFactory。