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对象实例化工厂内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring中@Controller和@RestController的区别详解

    Spring中@Controller和@RestController的区别详解

    这篇文章主要介绍了Spring中@Controller和@RestController的区别详解,@RestController 是 @Controller 和 @ResponseBody 的结合体,单独使用 @RestController 的效果与 @Controller 和 @ResponseBody 二者同时使用的效果相同,需要的朋友可以参考下
    2023-10-10
  • mybatis水平分表实现动态表名的项目实例

    mybatis水平分表实现动态表名的项目实例

    本文主要介绍了mybatis水平分表实现动态表名的项目实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Spring AOP面向切面编程实现原理方法详解

    Spring AOP面向切面编程实现原理方法详解

    这篇文章主要介绍了Spring AOP面向切面编程实现原理方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 简单谈谈Java中的方法和方法重载

    简单谈谈Java中的方法和方法重载

    下面小编就为大家带来一篇简单谈谈Java中的方法和方法重载。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 深入理解java的spring-ioc的使用

    深入理解java的spring-ioc的使用

    这篇文章主要介绍了java的spring-ioc的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Spring Bean基本管理实例详解

    Spring Bean基本管理实例详解

    这篇文章主要介绍了Spring Bean基本管理,以实例形式较为详细的分析了Spring Bean的相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • springboot注册bean的三种方法

    springboot注册bean的三种方法

    这篇文章主要介绍了springboot注册bean的三种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • 如何设计一个安全的API接口详解

    如何设计一个安全的API接口详解

    在日常开发中,总会接触到各种接口,前后端数据传输接口,第三方业务平台接口,下面这篇文章主要给大家介绍了关于如何设计一个安全的API接口的相关资料,需要的朋友可以参考下
    2021-08-08
  • 通过Jenv管理多JDK版本的详细介绍

    通过Jenv管理多JDK版本的详细介绍

    jenv是一个用于管理 Java 环境的工具,它允许用户在不同的Java版本之间轻松切换,这篇文章主要介绍了通过Jenv管理多JDK版本的详细介绍,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-05-05
  • 解决mybatis无法给带有下划线属性赋值问题

    解决mybatis无法给带有下划线属性赋值问题

    这篇文章主要介绍了解决mybatis无法给带有下划线属性赋值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01

最新评论