pc端与手机端网站开发的区别手机制作公章的软件

diannao/2026/1/16 19:58:39/文章来源:
pc端与手机端网站开发的区别,手机制作公章的软件,网站新闻标题字数,购物网站静态页面DefaultListableBeanFactory源码分析文章目录 一、概述 二、关键结构与存储 Bean定义的存储结构ConcurrentHashMap的使用和意义 三、核心功能解析 四、总结 DefaultListableBeanFactory源码分析 一、概述 DefaultListableBeanFactory 是 Spring 框架中的一个核心类#xff…DefaultListableBeanFactory源码分析文章目录 一、概述 二、关键结构与存储 Bean定义的存储结构ConcurrentHashMap的使用和意义 三、核心功能解析 四、总结 DefaultListableBeanFactory源码分析 一、概述 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.mzph.cn/diannao/91331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有高并发,高访问量网站开发兰州优化网站公司

目录 部署模式概述 1. Local Mode 2. Standalone Mode 3. YARN Mode 4. Mesos Mode 5. Kubernetes Mode 部署模式选择 部署模式概述 Apache Spark支持多种部署模式,这些模式决定了如何在集群上启动和运行你的Spark应用程序。以下是Spark支持的主要部署模式&a…

网站建站平台大学生网站模板

在开发高性能的C应用中,数据库操作的效率往往成为一个瓶颈。传统的同步数据库操作在等待数据库响应时会阻塞程序的执行,导致整体性能下降。为了解决这个问题,异步操作成为了一个重要的技术手段。 本文将详细介绍如何在C中使用MySQL的异步接口…

wordpress 插件下载站怎么做网站文字优化

跳跳! 题目描述 你是一只小跳蛙,你特别擅长在各种地方跳来跳去。 这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 i i i 块的石头高度为 h i h_i hi​,地面的高度是 h 0 …

手机网站版面设计机械代加工厂家

http://api.map.baidu.com/lbsapi/creatmap/index.html转载于:https://www.cnblogs.com/qinqiu/p/4476747.html

广告在什么网站做网站空间如何使用

Deep networks Deep Learning and Unsupervised Feature Learning Tutorial Solutions 深度网络的优势 比单层神经网络能学习到更复杂的表达。不同层的网络学习到的特征是由最底层到最高层慢慢上升的。比如在图像的学习中,第一个隐含层网络可能学习的是边缘特征&am…

免费网站友情链接深圳网站建设平台

目录: 单例模式在类中实现装饰器批量装饰实现单例模式 ,且不丢失类型提示限制实例个数 1.重写__new__方法实现多线程情况下的单例模式 用new方法实现单例模式 import time, threadingclass Singleton:"""单例模式————最多只允许创…

知名网站建设加工百度指数可以查询多长时间的

当你掌握Java语言到了一定的阶段,或者说已经对Java的常用类和API都使用的行云流水。你会不会有一些思考?比如,这个类是如何设计的?这个方法是怎么实现的?接下来的一系列文章,我们一起学习下Java的一些常见类…

做企业公示的数字证书网站百度搜索排名怎么收费

在我的上一篇博客《Java JDBC学习实战(一): JDBC的基本操作》中,简要介绍了jdbc开发的基本流程,并详细介绍了Statement和PreparedStatement的使用:利用这两个API可以执行SQL语句,完成基本的CURD…

生产企业做网站有用吗网站百度不到

商业竞争激烈,品牌不仅是企业的标志和形象,更是其核心价值和竞争力的体现。然而,企业在品牌推广过程中面临着诸多如缺乏有效的渠道管理、品牌形象模糊以及竞争激烈的市场环境等。这些阻碍着企业的品牌发展和市场占有率的提升。本文将通过企业…

高性能网站建设进行指南深圳vi设计公司全力设计

如果您正在使用Maven构建Java项目,可能是在Eclipse中,或者是通过运行mvn install在命令提示符下构建的,并且构建失败并显示诸如“无效的目标发行版:1.7”或“无效的目标发行版:1.8”之类的错误,那么您来了到…

网站的面包屑怎么做的东莞网页平面设计

刷题建议 刷题建议与debug 代码随想录目前基本都有了视频讲解,一定要先看视频,事半功倍。写博客,将自己的感悟沉淀下来,不然会忘大家提问的时候,记得要把问题描述清楚,自己在哪一步遇到了问题&#xff0c…

文件外链生成网站王也踏青

题面 最小支配集全集-最大独立集 所以先把点权改成正无穷/负无穷来保证强制选/不选某个点到独立集里&#xff0c;然后变成了洛谷的动态DP模板 GTMDNOIP2018ZTY 1 #include<stack>2 #include<cstdio>3 #include<cstring>4 #include<algorithm>5 using n…

网站如何做聚合页面游戏音效设计师培训

<base href>就是指网页里面的相对链接 的前缀url&#xff0c;如在<head></head>部分定义了此链接为http://ent.sina.com.cn/ &#xff0c;那么下面的<a hrefaaa.html></a>代表http://ent.sina.com.cn/aaa.html 这个标签的用处是解决编程时候的相…

广州做网站要多少钱网站建设的作业模板

一、前言 大家好&#xff0c;这里是白泽。有一些同学提问&#xff0c;希望在自己的简历上增加一些有含金量的项目经历&#xff0c;最好能够去参与一些开源项目的开发&#xff0c;但由于对一个庞大的开源项目缺乏认知&#xff0c;难以着手。同时也担心自己能力不足&#xff0c;…

网站模板 音乐济南建设工程交易网

SMB简介&#xff1a; SMB&#xff08;Server Message Block&#xff09;(*nix平台和Win NT4.0又称CIFS)协议是Windows平台标准文件共享协议&#xff0c;Linux平台通过samba来支持。SMB最新版本v3.0&#xff0c;在v2.0基础上针对WAN和分布式有改进。 建议使用原版wind…

网站搜索引擎南昌官网seo

如何去除打印时出现的教育版字样&#xff1f;当我们收到甲方提供的建筑图纸时&#xff0c;尤其是设备安装类专业的CAD文件&#xff0c;很多都是教育版&#xff0c;也不知道是为啥。但是作为设计师&#xff0c;打印图纸时出现教育版戳记&#xff0c;那就显得太不专业了&#xff…

太原网站建设推广注册建设网站的公司网站

这道题就是 「BZOJ1070」[SCOI2007]修车 的加强版 如果一开始把全部边连上会T 优化的方法是只连用到过和下一次增广可能用到的边。 1 #include<bits/stdc.h>2 using namespace std;3 const int N50,M110,NN100010,oo1e9;4 int n,m,cost[N][M],tot,s,t,p[N],rank[NN],c[NN…

o2o典型代表网站做企业网站的轻量级cms

前言&#xff1a;在各类网站论坛上,没有找到与工作比较贴切的技能,所以特此写一些对刚步入工作或者工作中没有重视的技能与问题,各位大牛请及时关闭文章.ps1&#xff1a;文中所有标点都是英文的,看官请不要在意.为了便于平时敲代码,所以中文输入法也默认了英文标点(防止各类因为…

dnf可以去哪个网站做代练wordpress如何开启阿里云cdn

上周陪同之前一起工作的同事去面试&#xff08;乔治&#xff0c;小袁&#xff0c;鹏飞&#xff08;面试人&#xff09;&#xff09;&#xff0c;第一站是去深圳&#xff0c;第二站上海&#xff0c;第三站杭州。面试什么公司我在这里就不多说了&#xff0c;你们知道是一线公司就…

企业网站建设硬件德令哈网站建设公司

满意答案pihiac2014.09.05采纳率&#xff1a;45% 等级&#xff1a;7已帮助&#xff1a;460人scanf语句的一般格式如下&#xff1a;scanf("格式字符串", 地址&#xff0c;…);scanf语句用"格式字符串"控制键盘读入的方式。"格式字符串"中一般只…