Spring中的BeanFactory对象实例化工厂详解

 更新时间:2023年12月01日 10:13:14   作者:军伟@  
这篇文章主要介绍了Spring中的BeanFactory对象实例化工厂详解,BeanFactory及其子类是Spring IOC容器中最重要的一个类,BeanFactory由类名可以看出其是一个Bean工厂类,其实它确实是一个Bean工厂类,完成Bean的初始化操作,需要的朋友可以参考下

BeanFactory对象实例化工厂

BeanFactory及其子类是Spring IOC容器中最重要的一个类,BeanFactory由类名可以看出其是一个Bean工厂类,其实它确实是一个Bean工厂类,完成Bean的初始化操作。

Bean的初始化操作还是一个比较麻烦的操作,首先根据spring注入配置将bean初始化为单例或者原型,其次需要根据Bean的属性配置来完成Bean参数的注入配置,还有要解决单例模式下Bean的循环依赖的问题,原型模式下bean的循环依赖会直接报错。

BeanFactory接口及其实现类:

BeanFactory接口继承关系:

BeanFactory 是Spring bean容器的根接口.提供获取bean,是否包含bean,是否单例与原型,获取bean类型,bean 别名的api.

  •  AutowireCapableBeanFactory 添加集成其他框架功能.如果集成WebWork则可以使用Spring对Actions等进行管理.
  •  HierarchicalBeanFactory 提供父容器的访问功能
  • ConfigurableBeanFactory 如名,提供factory的配置功能,眼花缭乱好多api
  •  ConfigurableListableBeanFactory 集大成者,提供解析,修改bean定义,并与初始化单例.
  •  ListableBeanFactory 提供容器内bean实例的枚举功能.这边不会考虑父容器内的实例.

BeanFactory提供的接口如下:

public interface BeanFactory {
	String FACTORY_BEAN_PREFIX = "&";
	//根据名称获取bean
	Object getBean(String name) throws BeansException;
	//根据名称及类型获取类
	<T> T getBean(String name, Class<T> requiredType) throws BeansException;
	//根据类型获取类
	<T> T getBean(Class<T> requiredType) throws BeansException;
	Object getBean(String name, Object... args) throws BeansException;
	<T> T getBean(Class<T> requiredType, Object... args) throws BeansException;
	boolean containsBean(String name);
	//单例判断
	boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
	//原型判断
	boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
	//类型判断
	boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;
	boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException;
	Class<?> getType(String name) throws NoSuchBeanDefinitionException;
	String[] getAliases(String name);
}

总结:接下来我们通过几篇博客来介绍BeanFactory所提供的Bean实例化操作。

到此这篇关于Spring中的BeanFactory对象实例化工厂详解的文章就介绍到这了,更多相关BeanFactory对象实例化工厂内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用feign传递参数类型为MultipartFile的问题

    使用feign传递参数类型为MultipartFile的问题

    这篇文章主要介绍了使用feign传递参数类型为MultipartFile的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • java实现读取带合并单元格的Excel

    java实现读取带合并单元格的Excel

    这篇文章主要为大家详细介绍了java如何实现读取带合并单元格的Excel,文中的示例代码讲解详细, 感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • MyBatis Log 插件无法显示SQL语句的原因解析

    MyBatis Log 插件无法显示SQL语句的原因解析

    MyBatis Log是IDEA一款下载量非常高的插件,该插件可以对控制台打印的日志进行解析,然后将对应的SQL语句整理并拼接好对应的参数,非常方便。这篇文章给大家介绍MyBatis Log 插件无法显示SQL语句的原因,感兴趣的朋友跟随小编一起看看吧
    2020-09-09
  • java统计字符串中重复字符出现次数的方法

    java统计字符串中重复字符出现次数的方法

    这篇文章主要介绍了java统计字符串中重复字符出现次数的方法,涉及java针对字符串的遍历与判断相关操作技巧,需要的朋友可以参考下
    2016-08-08
  • java数组中的异常类型整理

    java数组中的异常类型整理

    在本篇文章里小编给各位分享的是一篇关于java数组中的异常类型整理内容,有兴趣的朋友们可以学习下。
    2021-02-02
  • Java字符串转驼峰格式的方法

    Java字符串转驼峰格式的方法

    在开发场景中,我们会遇到一些涉及字符串的转化,本文主要介绍了Java字符串转驼峰格式的方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • java基于servlet实现文件上传功能

    java基于servlet实现文件上传功能

    这篇文章主要为大家详细介绍了java基于servlet实现文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • Java面向对象之继承的概念详解

    Java面向对象之继承的概念详解

    这篇文章主要介绍了Java面向对象之继承的概念详解,Java是一种面向对象的编程语言,继承是实现面向对象编程的基础之一。通过继承,我们可以使代码更具可读性、可重用性和可维护性,从而提高程序的效率和可靠性,需要的朋友可以参考下
    2023-04-04
  • 带你了解Java数据结构和算法之哈希表

    带你了解Java数据结构和算法之哈希表

    这篇文章主要为大家介绍了Java数据结构和算法之哈希表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • 使用Spring Cloud Stream处理事件的示例详解

    使用Spring Cloud Stream处理事件的示例详解

    Spring Cloud Stream 是基于 Spring Boot 的用于构建消息驱动微服务的框架,本文主要介绍了如何使用 Spring Cloud Stream 来处理事件,需要的可以参考一下
    2023-06-06

最新评论