ConfigurableBeanFactory 冷不防 2024-03-17 18:17 50阅读 0赞 `ConfigurableBeanFactory` 接口包含了一些用于配置 bean 工厂的方法,使开发人员能够更好地控制 bean 的创建和初始化等行为。它继承自 `HierarchicalBeanFactory` 和 `SingletonBeanRegistry` 接口,并添加了一些扩展方法。 这是一个配置接口,大多数工厂类应该来实现此接口。除了包含在 \{@link org.springframework.beans.factory.BeanFactory\} 接口中的 bean 工厂客户端方法外,该接口还提供了一些用于配置 bean 工厂的功能。 这个 bean 工厂接口不适用于普通的应用程序代码使用:请在典型的场景中使用\{@link org.springframework.beans.factory.BeanFactory\}或 \{@link org.springframework.beans.factory.ListableBeanFactory\}。该扩展接口主要用于允许内部框架的插件和特殊访问 bean 工厂的配置方法。 public interface ConfigurableBeanFactory extends HierarchicalBeanFactory, SingletonBeanRegistry {} 标准单例作用域的范围标识符:\{@value\}。 可以通过\`registerScope\`方法添加自定义作用域。 参见:\{@link \#registerScope\}。 String SCOPE_SINGLETON = "singleton"; 标准原型作用域的范围标识符:\{@value\}。 可以通过\`registerScope\`方法添加自定义作用域。 参见:\{@link \#registerScope\}。 String SCOPE_PROTOTYPE = "prototype"; 设置这个Bean工厂的父级。 请注意,父级一旦设置就不能更改:如果该父级无法在工厂实例化时使用,则只能在构造函数之外设置。 void setParentBeanFactory(BeanFactory parentBeanFactory) throws IllegalStateException; 设置用于加载bean类的类加载器。 默认值为线程上下文类加载器。 请注意,该类加载器仅适用于尚未解析的Bean定义的加载。从Spring 2.0版本开始,默认情况下,Bean定义仅包含Bean类名称,在工厂处理Bean定义时才解析。 void setBeanClassLoader(@Nullable ClassLoader beanClassLoader); 返回此工厂用于加载bean类的类加载器(如果连系统的ClassLoader都无法访问,只返回null)。 @Nullable ClassLoader getBeanClassLoader(); 设置是否缓存bean元数据,如给定的bean定义(以合并方式)和已解析的bean类。默认值为开启。 关闭此标志以启用对Bean定义对象的热刷新,特别是对于Bean类。如果该标志关闭,任何创建bean实例的操作将重新查询bean类加载器以获取新解析的类。 void setCacheBeanMetadata(boolean cacheBeanMetadata); 返回是否缓存bean元数据,例如给定的bean定义(以合并方式)和已解析的bean类。 boolean isCacheBeanMetadata(); 添加一个PropertyEditorRegistrar到所有bean创建过程中,该注册器会为每个bean创建尝试创建新的PropertyEditor实例并在给定的注册表上进行注册。通过这种方式避免了在自定义编辑器上进行同步的需求,因此通常建议使用这种方法来代替registerCustomEditor方法。 void addPropertyEditorRegistrar(PropertyEditorRegistrar registrar); 设置一个自定义类型转换器,用于在该BeanFactory中进行bean属性值、构造函数参数值等的转换。 此操作将覆盖默认的PropertyEditor机制,因此任何自定义编辑器或自定义编辑器注册器将变得无关紧要。 void setTypeConverter(TypeConverter typeConverter); 获取由这个BeanFactory使用的类型转换器。由于TypeConverter通常并不是线程安全的,因此每次调用此方法时可能会返回一个新的实例。 如果默认的PropertyEditor机制处于活动状态,则返回的TypeConverter将了解已注册的所有自定义编辑器。 TypeConverter getTypeConverter(); 添加一个String解析器,用于解析嵌入值,例如注解属性中的值。 void addEmbeddedValueResolver(StringValueResolver valueResolver); 判断是否已在此Bean工厂中注册了一个解析嵌入值的解析器,可以通过 resolveEmbeddedValue(String)方法应用。 boolean hasEmbeddedValueResolver(); 解析给定的嵌入值,例如注解属性。 @Nullable String resolveEmbeddedValue(String value); 添加一个新的BeanPostProcessor,将应用于由此工厂创建的bean。在工厂配置期间调用。 注意:在此处提交的后处理器将按照注册顺序应用;通过实现org.springframework.core.Ordered接口表达的任何排序语义将被忽略。注意,在自动检测到的后处理器(例如,ApplicationContext中的bean)之后,始终会应用在程序上注册的后处理器。 void addBeanPostProcessor(BeanPostProcessor beanPostProcessor); 返回当前注册的BeanPostProcessors的数量(如果有的话)。 int getBeanPostProcessorCount(); 注册给定的作用域,由给定的作用域实现支持。 void registerScope(String scopeName, Scope scope); 返回当前所有注册的作用域的名称。 这只会返回显式注册的作用域的名称。 内置的作用域,如"singleton"和"prototype",将不会显示。 如果没有任何作用域,则返回一个空数组。 String[] getRegisteredScopeNames(); 返回给定作用域名称的作用域实现,如果有的话。 这只会返回显式注册的作用域。 内置的作用域,如"singleton"和"prototype",将不会暴露。 如果没有注册该作用域,则返回\{@code null\}。 @Nullable Scope getRegisteredScope(String scopeName); 设置此bean工厂的 `ApplicationStartup`。 这允许应用程序上下文在应用程序启动期间记录指标。 void setApplicationStartup(ApplicationStartup applicationStartup); 提供与此工厂相关的安全访问控制上下文。 返回适用的AccessControlContext(永远不会为 `null`)。 AccessControlContext getAccessControlContext(); 从另一个Bean工厂中拷贝所有相关的配置。 应包括所有标准配置设置,以及BeanPostProcessors、Scopes和特定于工厂的内部设置。 不应包括任何实际bean定义的元数据,例如BeanDefinition对象和bean名称别名。 void copyConfigurationFrom(ConfigurableBeanFactory otherFactory); 给定一个bean名称,创建一个别名。通常我们使用这个方法来支持在XML id中是非法的名称(用于bean名称)。 通常在工厂配置期间调用,但也可用于运行时注册别名。因此,工厂实现应该同步别名访问。 void registerAlias(String beanName, String alias) throws BeanDefinitionStoreException; 解析此工厂中注册的所有别名目标名称和别名,应用给定的StringValueResolver对它们进行解析。 例如,该值解析器可以解析目标bean名称和别名名称中的占位符。 void resolveAliases(StringValueResolver valueResolver); 根据给定的bean名称返回合并的BeanDefinition, 如果有必要,则将子bean定义与其父bean定义合并。考虑祖先工厂中的bean定义。 BeanDefinition getMergedBeanDefinition(String beanName) throws NoSuchBeanDefinitionException; 确定具有给定名称的bean是否为FactoryBean。 boolean isFactoryBean(String name) throws NoSuchBeanDefinitionException; 显式控制指定bean的当前创建状态。仅供容器内部使用。 void setCurrentlyInCreation(String beanName, boolean inCreation); 注册一个依赖于给定bean的依赖bean,在给定bean销毁之前销毁。 void registerDependentBean(String beanName, String dependentBeanName); 返回所有依赖于指定bean的bean的名称(如果有的话)。 String[] getDependentBeans(String beanName); 根据bean定义销毁给定的bean实例(通常是从此工厂获取的原型实例)。 在销毁过程中,对于任何异常,应该捕获并记录它们,而不是传播给该方法的调用者。 void destroyBean(String beanName, Object beanInstance); 在当前目标作用域中销毁指定的作用域bean(如果存在)。 在销毁过程中,对于任何异常,应该捕获并记录它们,而不是传播给该方法的调用者。 void destroyScopedBean(String beanName); 销毁此工厂中的所有单例bean,包括已被注册处理的内部bean。 通常在工厂关闭时调用。 在销毁过程中,对于任何异常,应该捕获并记录它们,而不是传播给该方法的调用者。 void destroySingletons();
相关 ConfigurableBeanFactory `ConfigurableBeanFactory` 接口包含了一些用于配置 bean 工厂的方法,使开发人员能够更好地控制 bean 的创建和初始化等行为。它继承自 `Hier 冷不防/ 2024年03月17日 18:17/ 0 赞/ 51 阅读
相关 configurablebeanfactory ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ub 喜欢ヅ旅行/ 2023年08月17日 16:04/ 0 赞/ 110 阅读
相关 Spring源码学习--ConfigurableBeanFactory接口 Spring源码学习--ConfigurableBeanFactory接口 2018年06月26日 18:45:07 [可乐丶][Link 1] 阅读数:281更多 所 淡淡的烟草味﹌/ 2022年04月13日 05:26/ 0 赞/ 248 阅读
相关 Spring5源码浅析(三)—ConfigurableBeanFactory Spring5源码浅析(三)—ConfigurableBeanFactory 2019年01月03日 10:58:22 [jacob\_earl][jacob_earl] 深藏阁楼爱情的钟/ 2022年02月18日 10:39/ 0 赞/ 326 阅读
还没有评论,来说两句吧...