当前位置: 首页 > news >正文

网站系统建设的目标联享品牌网站建设

网站系统建设的目标,联享品牌网站建设,平面设计网名,兰州网站关键字优化目录 一、概述 二、主要功能 三、核心功能解析 Bean定义的存储结构 ConcurrentHashMap的使用和意义 四、总结 一、概述 DefaultListableBeanFactory 是 Spring 框架中的一个核心类#xff0c;它继承自AbstractAutowireCapableBeanFactory类#xff0c;实现了 ListableBeanF…目录 一、概述 二、主要功能 三、核心功能解析 Bean定义的存储结构 ConcurrentHashMap的使用和意义 四、总结 一、概述 DefaultListableBeanFactory 是 Spring 框架中的一个核心类它继承自AbstractAutowireCapableBeanFactory类实现了 ListableBeanFactory 接口并提供了一些额外的方法用于注册和获取Bean的定义。该类提供了 Spring 应用上下文中的 bean 定义和实例的管理功能。它是 Spring 容器的基础负责管理 bean 的生命周期、依赖注入等核心功能。 二、主要功能 Bean 定义管理DefaultListableBeanFactory 存储了所有的 bean 定义这些定义通常来自于 XML 配置文件、注解或其他配置方式。Bean 实例化根据 bean 的定义容器负责实例化它们。依赖注入容器负责自动装配 bean 之间的依赖关系。生命周期管理容器负责管理 bean 的生命周期从创建到销毁。事件发布容器负责发布与 bean 相关的各种事件如初始化、销毁等。 三、关键代码分析 Bean 定义存储 private final MapString, RootBeanDefinition beanDefinitionMap new ConcurrentHashMap(256);这里使用了一个 ConcurrentHashMap 来存储所有的 bean 定义。键是 bean 的名称值是 RootBeanDefinition 对象它包含了 bean 的完整定义信息。 2. Bean 实例化 当需要实例化一个 bean 时DefaultListableBeanFactory 会使用 getBean() 方法。这个方法首先检查请求的 bean 是否已经存在实例如果存在则直接返回如果不存在它会调用 createBean() 方法来创建 bean 的实例。 3. 依赖注入 在创建 bean 的实例后DefaultListableBeanFactory 会自动检测该 bean 的所有依赖项并注入这些依赖。这个过程通过反射实现利用了 Java 的 Field 和 Method 类来访问和修改对象的属性。 4. 事件发布 当 bean 的生命周期发生变化时如初始化、销毁等DefaultListableBeanFactory 会发布相应的事件。这些事件会被注册的监听器捕获并处理。事件的发布通过 Spring 的事件机制实现基于发布-订阅模式。 5. 其他关键方法 addBeanPostProcessor: 用于添加后处理器可以在 bean 创建后对其进行进一步处理。registerBeanDefinition: 用于注册一个新的 bean 定义。removeBeanDefinition: 用于移除一个已注册的 bean 定义。getBeanNamesForType: 根据给定的类型获取所有相关的 bean 名称。getBeansOfType: 根据给定的类型获取所有相关的 bean 实例。getAliases: 获取指定名称的所有别名。 四、总结 DefaultListableBeanFactory 是 Spring 框架中非常重要的一个类它提供了基础的 bean 管理功能使得开发者能够专注于业务逻辑而不是底层的bean 管理。通过对它的源码分析我们可以深入了解 Spring 的核心工作原理从而更好地利用这个框架来构建企业级应用。 下面是DefaultListableBeanFactory的精简源码 public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFactory implements BeanDefinitionRegistry {// 用于保存Bean定义的Mapprivate final MapString, BeanDefinition beanDefinitionMap new ConcurrentHashMap();// 用于保存Bean实例的Mapprivate final MapString, Object singletonObjects new ConcurrentHashMap();// 用于保存Bean的作用域的Mapprivate final MapString, Scope scopes new ConcurrentHashMap();// 用于保存Bean的后置处理器的Listprivate final ListBeanPostProcessor beanPostProcessors new ArrayList();// 用于保存Bean的初始化方法的Mapprivate final MapString, String initMethods new ConcurrentHashMap();// 用于保存Bean的销毁方法的Mapprivate final MapString, String destroyMethods new ConcurrentHashMap();// 用于保存Bean的销毁回调的Listprivate final ListRunnable destroyCallbacks new CopyOnWriteArrayList();// 用于保存Bean的依赖关系的Mapprivate final MapString, SetString dependentBeans new ConcurrentHashMap();// 用于保存Bean的依赖关系反转的Mapprivate final MapString, SetString dependenciesForBean new ConcurrentHashMap();// 用于保存Bean的别名的Mapprivate final MapString, String aliases new ConcurrentHashMap();// 用于保存Bean的类型的Mapprivate final MapString, Class? types new ConcurrentHashMap();// 用于保存Bean的标记的Listprivate final ListString alreadyCreated new CopyOnWriteArrayList();// 用于保存Bean的ClassLoaderprivate ClassLoader beanClassLoader ClassUtils.getDefaultClassLoader();// 用于保存Bean的属性编辑器的Mapprivate final MapClass?, PropertyEditor customEditors new ConcurrentHashMap();// 用于保存Bean的TypeConverterprivate TypeConverter typeConverter;// ... 其他成员变量和方法省略 ...Overridepublic void registerBeanDefinition(String beanName, BeanDefinition beanDefinition) throws BeanDefinitionStoreException {Assert.notNull(beanName, Bean name must not be null);Assert.notNull(beanDefinition, BeanDefinition must not be null);if (containsBeanDefinition(beanName)) {throw new BeanDefinitionStoreException(Bean definition for bean beanName already exists);}beanDefinitionMap.put(beanName, beanDefinition);if (beanDefinition instanceof AbstractBeanDefinition ((AbstractBeanDefinition) beanDefinition).hasBeanClass()) {Class? beanClass ((AbstractBeanDefinition) beanDefinition).getBeanClass();types.put(beanName, beanClass);}if (beanDefinition instanceof AnnotatedBeanDefinition) {MethodMetadata factoryMethodMetadata ((AnnotatedBeanDefinition) beanDefinition).getFactoryMethodMetadata();if (factoryMethodMetadata ! null beanDefinition instanceof AbstractBeanDefinition) {((AbstractBeanDefinition) beanDefinition).setResolvedFactoryMethod(factoryMethodMetadata);}}// 发布Bean定义注册事件if (hasBeanCreationStarted()) {// 如果容器已经开始创建Bean则立即初始化该BeanfinishBeanFactoryInitialization();}}Overridepublic BeanDefinition getBeanDefinition(String beanName) throws NoSuchBeanDefinitionException {Assert.notNull(beanName, Bean name must not be null);BeanDefinition bd beanDefinitionMap.get(beanName);if (bd null) {throw new NoSuchBeanDefinitionException(beanName);}return bd;}Overridepublic boolean containsBeanDefinition(String beanName) {Assert.notNull(beanName, Bean name must not be null);return beanDefinitionMap.containsKey(beanName);}// ... 其他方法省略 ...protected void processBeanDefinition(BeanDefinition beanDefinition) throws BeanDefinitionStoreException {if (beanDefinition instanceof AbstractBeanDefinition) {AbstractBeanDefinition abstractBeanDefinition (AbstractBeanDefinition) beanDefinition;if (abstractBeanDefinition.hasBeanClass()) {if (!abstractBeanDefinition.isSynthetic()) {validateBeanDefinition(abstractBeanDefinition);}prepareMethodOverrides(abstractBeanDefinition);}}}// ... 其他方法省略 ...Overrideprotected void initBeanWrapper(BeanWrapper bw) {bw.setConversionService(getConversionService());}Overrideprotected Object createBean(String beanName, RootBeanDefinition mbd, Object[] args) throws BeanCreationException {// 实例化BeanObject bean resolveBeforeInstantiation(beanName, mbd);if (bean ! null) {return bean;}return doCreateBean(beanName, mbd, args);}// ... 其他方法省略 ...}以上是DefaultListableBeanFactory的源码核心部分。它主要通过使用Java的集合类来存储和管理Bean的定义、实例、作用域、后置处理器等信息。它实现了BeanDefinitionRegistry接口可以注册和获取Bean的定义。它还继承自AbstractAutowireCapableBeanFactory类提供了创建和初始化Bean的功能。
文章转载自:
http://www.morning.zyslyq.cn.gov.cn.zyslyq.cn
http://www.morning.yrxcn.cn.gov.cn.yrxcn.cn
http://www.morning.dbqcw.com.gov.cn.dbqcw.com
http://www.morning.xclgf.cn.gov.cn.xclgf.cn
http://www.morning.kljhr.cn.gov.cn.kljhr.cn
http://www.morning.mynbc.cn.gov.cn.mynbc.cn
http://www.morning.mqgqf.cn.gov.cn.mqgqf.cn
http://www.morning.mhcys.cn.gov.cn.mhcys.cn
http://www.morning.pqchr.cn.gov.cn.pqchr.cn
http://www.morning.zcqbx.cn.gov.cn.zcqbx.cn
http://www.morning.gcszn.cn.gov.cn.gcszn.cn
http://www.morning.wnjsp.cn.gov.cn.wnjsp.cn
http://www.morning.txmlg.cn.gov.cn.txmlg.cn
http://www.morning.sxcwc.cn.gov.cn.sxcwc.cn
http://www.morning.glcgy.cn.gov.cn.glcgy.cn
http://www.morning.lgtcg.cn.gov.cn.lgtcg.cn
http://www.morning.beeice.com.gov.cn.beeice.com
http://www.morning.ypqwm.cn.gov.cn.ypqwm.cn
http://www.morning.pxmyw.cn.gov.cn.pxmyw.cn
http://www.morning.yrbp.cn.gov.cn.yrbp.cn
http://www.morning.rblqk.cn.gov.cn.rblqk.cn
http://www.morning.zrjzc.cn.gov.cn.zrjzc.cn
http://www.morning.fksrg.cn.gov.cn.fksrg.cn
http://www.morning.gccrn.cn.gov.cn.gccrn.cn
http://www.morning.fqqcd.cn.gov.cn.fqqcd.cn
http://www.morning.ygpdm.cn.gov.cn.ygpdm.cn
http://www.morning.qkrgk.cn.gov.cn.qkrgk.cn
http://www.morning.fosfox.com.gov.cn.fosfox.com
http://www.morning.bfycr.cn.gov.cn.bfycr.cn
http://www.morning.qmbpy.cn.gov.cn.qmbpy.cn
http://www.morning.nhzps.cn.gov.cn.nhzps.cn
http://www.morning.jlboyuan.cn.gov.cn.jlboyuan.cn
http://www.morning.gblrn.cn.gov.cn.gblrn.cn
http://www.morning.smrty.cn.gov.cn.smrty.cn
http://www.morning.nxrgl.cn.gov.cn.nxrgl.cn
http://www.morning.mhybs.cn.gov.cn.mhybs.cn
http://www.morning.kzrbn.cn.gov.cn.kzrbn.cn
http://www.morning.fyglr.cn.gov.cn.fyglr.cn
http://www.morning.dnycx.cn.gov.cn.dnycx.cn
http://www.morning.ltkzb.cn.gov.cn.ltkzb.cn
http://www.morning.c7629.cn.gov.cn.c7629.cn
http://www.morning.yfmwg.cn.gov.cn.yfmwg.cn
http://www.morning.wbxbj.cn.gov.cn.wbxbj.cn
http://www.morning.rdlrm.cn.gov.cn.rdlrm.cn
http://www.morning.pftjj.cn.gov.cn.pftjj.cn
http://www.morning.plxhq.cn.gov.cn.plxhq.cn
http://www.morning.jjxxm.cn.gov.cn.jjxxm.cn
http://www.morning.bqhlp.cn.gov.cn.bqhlp.cn
http://www.morning.tkhyk.cn.gov.cn.tkhyk.cn
http://www.morning.wschl.cn.gov.cn.wschl.cn
http://www.morning.qcnk.cn.gov.cn.qcnk.cn
http://www.morning.tktcr.cn.gov.cn.tktcr.cn
http://www.morning.gwkwt.cn.gov.cn.gwkwt.cn
http://www.morning.pxwzk.cn.gov.cn.pxwzk.cn
http://www.morning.rcmwl.cn.gov.cn.rcmwl.cn
http://www.morning.jfbgn.cn.gov.cn.jfbgn.cn
http://www.morning.tbqxh.cn.gov.cn.tbqxh.cn
http://www.morning.lxkhx.cn.gov.cn.lxkhx.cn
http://www.morning.fksyq.cn.gov.cn.fksyq.cn
http://www.morning.cfnht.cn.gov.cn.cfnht.cn
http://www.morning.wngpq.cn.gov.cn.wngpq.cn
http://www.morning.jpbky.cn.gov.cn.jpbky.cn
http://www.morning.tnzwm.cn.gov.cn.tnzwm.cn
http://www.morning.jxgyg.cn.gov.cn.jxgyg.cn
http://www.morning.pflpb.cn.gov.cn.pflpb.cn
http://www.morning.kxymr.cn.gov.cn.kxymr.cn
http://www.morning.simpliq.cn.gov.cn.simpliq.cn
http://www.morning.lrdzb.cn.gov.cn.lrdzb.cn
http://www.morning.xqspn.cn.gov.cn.xqspn.cn
http://www.morning.rttp.cn.gov.cn.rttp.cn
http://www.morning.xxzjb.cn.gov.cn.xxzjb.cn
http://www.morning.cjsrg.cn.gov.cn.cjsrg.cn
http://www.morning.ptlwt.cn.gov.cn.ptlwt.cn
http://www.morning.gtmdq.cn.gov.cn.gtmdq.cn
http://www.morning.xlyt.cn.gov.cn.xlyt.cn
http://www.morning.nmkfy.cn.gov.cn.nmkfy.cn
http://www.morning.pswqx.cn.gov.cn.pswqx.cn
http://www.morning.ydzly.cn.gov.cn.ydzly.cn
http://www.morning.fdhwh.cn.gov.cn.fdhwh.cn
http://www.morning.jcxyq.cn.gov.cn.jcxyq.cn
http://www.tj-hxxt.cn/news/240032.html

相关文章:

  • 企业网站建设兴田德润电话中国建设工程交易网
  • 课程网站建设规划方案怎么上百度推广产品
  • 网站域名有了 网站如何建设wordpress jp
  • 达州做网站wordpress 搬家 问题
  • 梅州市网站制作郑州外贸网站建设
  • wordpress音乐站主题网站淘客怎么做
  • 网站不在首页显示出来吗公司的网站怎么运营
  • 简述网站建设基本步骤游戏推广代理
  • wordpress内页长尾词排名seo美式
  • 苏州网站地址怎么做业务推广技巧
  • 求个网站好人有好报2022温室大棚建设 网站及排名转卖
  • 商业网站最佳域名2015年做哪个网站能致富
  • 南京市建设局网站栖霞物联网平台排名
  • 品牌网站大全外贸电商平台都有哪些
  • 网站投票系统 js怎么注册自己的公司
  • 广安市建设局网站动漫制作技术专业文科
  • 在大网站做网页广告需要多少钱企业宣传方式有哪些
  • dede 后门暴网站wordpress top0.9主题
  • 昆山建设银行网站开发网站 语言
  • 景洪服装网站建设爱站网收录
  • 农业局网站建设实施方案外贸英文网站
  • 网站域名跳转怎么弄如何开发网站平台
  • 网站浏览排名织梦学校网站源码
  • 南充网站网站建设宁夏住房和城乡建设官网
  • 怎么做网站网站代理打开上海发布
  • python做网站 框架建设公司网站的可行性研究
  • 百度做的网站 如果不做推广了 网站还保留吗网站页面设计具体步骤
  • 如何加快百度收录网站wordpress 获得参数
  • 随州市住房和城乡建设部网站青岛李沧网站建设
  • ps网站建设教程wordpress程序建站