当前位置: 首页 > news >正文 zencart 官方网站中国建设承包商网站 news 2025/10/28 9:16:25 zencart 官方网站,中国建设承包商网站,平度做网站,网站安装代码#x1f40c;个人主页#xff1a; #x1f40c; 叶落闲庭 #x1f4a8;我的专栏#xff1a;#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也#xff0c;而不可夺坚#xff1b;丹可磨也#xff0c;而不可夺赤。 容器实现 一、BeanFactory实现的特点1.1 Be… 个人主页 叶落闲庭 我的专栏 c语言 数据结构 javaEE 操作系统 Redis 石可破也而不可夺坚丹可磨也而不可夺赤。 容器实现 一、BeanFactory实现的特点1.1 BeanFactory实现1.2 BeanFactory无法解析Configuration和Bean 一、BeanFactory实现的特点 1.1 BeanFactory实现 BeanFactory是通过一个DefaultListableBeanFactory来实现的首先要创建一个DefaultListableBeanFactory的实例对象创建好后就作为一个核心的spring容器此时容器中还没有bean这时需要创建bean的定义主要是描述bean的特征包括类型scope单例、多例,是否有初始化方法和销毁方法根据这些描述信息就能知道bean有哪些特点并根据这些描述信息将bean创建出来bean的定义通过BeanDefinitionBuilder.genericBeanDefinition(Config.class)创建参数Config.class表示将Config这个类交给BeanFactory管理然后通过调用getBeanDefinition()将bean定义对象创建好即 AbstractBeanDefinition beanDefinition BeanDefinitionBuilder.genericBeanDefinition(com.dobbopro.TestBeanFactory.Config.class).setScope(singleton).getBeanDefinition();接下来通过beanFactory.registerBeanDefinition(config,beanDefinition);将这个定义好的bean进行注册注册好的bean的名字就是第一个参数configbean创建好后可以进行验证通过beanFactory.getBeanDefinitionNames()就可以得到bean的名字 代码实现 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;/*** Author YJ* Date 2023/10/1 20:36* Description:BeanFactory实现*/ public class TestBeanFactory {public static void main(String[] args) {DefaultListableBeanFactory beanFactory new DefaultListableBeanFactory();//定义beanDefinitionAbstractBeanDefinition beanDefinition BeanDefinitionBuilder.genericBeanDefinition(com.dobbopro.TestBeanFactory.Config.class).setScope(singleton).getBeanDefinition();//注册beanDefinitionbeanFactory.registerBeanDefinition(config,beanDefinition);for (String beanDefinitionName : beanFactory.getBeanDefinitionNames()) {System.out.println(beanDefinitionName); }}Configurationstatic class Config{Beanpublic Bean1 bean1() {return new Bean1();}Beanpublic Bean2 bean2() {return new Bean2();}}static class Bean1{private static final Logger log LoggerFactory.getLogger(Bean1.class);public Bean1() {log.debug(构造Bean1());}Autowiredprivate Bean2 bean2;public Bean2 getBean2() {return bean2;}}static class Bean2{private static final Logger log LoggerFactory.getLogger(Bean2.class);public Bean2() {log.debug(构造Bean2());}} }验证结果 1.2 BeanFactory无法解析Configuration和Bean 经过上述代码可以看出spring容器中只有一个config的bean,加了Bean注解的Bean1和Bean2并没添加到容器中说明BeanFactory无法解析Configuration和BeanConfiguration和Bean的解析是由其他的类来实现的AnnotationConfigUtils.registerAnnotationConfigProcessors(beanFactory);这个方法是给BeanFactory添加一些常用的后处理器有了后处理器就可以解析Configuration和Bean这些注解了具备了BeanFactory的一些扩展功能调用这个方法后就可以将带有注解Bean对应的bean对象添加到BeanFactory注意此时运行代码还不会将带有Bean注解的bean1和bean2补充到BeanFactory中这时只是添加到了BeanFactory还没有运行后处理器相当于工厂中有bean这个东西但是它们还没有工作 public static void main(String[] args) {DefaultListableBeanFactory beanFactory new DefaultListableBeanFactory();//定义beanDefinitionAbstractBeanDefinition beanDefinition BeanDefinitionBuilder.genericBeanDefinition(com.dobbopro.TestBeanFactory.Config.class).setScope(singleton).getBeanDefinition();//注册beanDefinitionbeanFactory.registerBeanDefinition(config,beanDefinition);//给BeanFactory添加后处理器AnnotationConfigUtils.registerAnnotationConfigProcessors(beanFactory);for (String beanDefinitionName : beanFactory.getBeanDefinitionNames()) {System.out.println(beanDefinitionName);}}要想让bean1和bean2运行起来需要先通过beanFactory.getBeansOfType(BeanFactoryPostProcessor.class)拿到Bean工厂中的所有后处理器得到是一个Map集合这个Map集合的key就是后处理器的名字value就是它们的值通过foeEach拿到每一个后处理器最后进行打印 public static void main(String[] args) {DefaultListableBeanFactory beanFactory new DefaultListableBeanFactory();//定义beanDefinitionAbstractBeanDefinition beanDefinition BeanDefinitionBuilder.genericBeanDefinition(com.dobbopro.TestBeanFactory.Config.class).setScope(singleton).getBeanDefinition();//注册beanDefinitionbeanFactory.registerBeanDefinition(config,beanDefinition);//给BeanFactory添加后处理器AnnotationConfigUtils.registerAnnotationConfigProcessors(beanFactory);beanFactory.getBeansOfType(BeanFactoryPostProcessor.class).values().stream().forEach(beanFactoryPostProcessor - {beanFactoryPostProcessor.postProcessBeanFactory(beanFactory);});for (String beanDefinitionName : beanFactory.getBeanDefinitionNames()) {System.out.println(beanDefinitionName);}} 文章转载自: http://www.morning.tsrg.cn.gov.cn.tsrg.cn http://www.morning.yqgny.cn.gov.cn.yqgny.cn http://www.morning.jrqw.cn.gov.cn.jrqw.cn http://www.morning.splcc.cn.gov.cn.splcc.cn http://www.morning.fpkpz.cn.gov.cn.fpkpz.cn http://www.morning.zlbjx.cn.gov.cn.zlbjx.cn http://www.morning.ftdlg.cn.gov.cn.ftdlg.cn http://www.morning.rrms.cn.gov.cn.rrms.cn http://www.morning.jypsm.cn.gov.cn.jypsm.cn http://www.morning.mlwhd.cn.gov.cn.mlwhd.cn http://www.morning.qfnrx.cn.gov.cn.qfnrx.cn http://www.morning.jcxqc.cn.gov.cn.jcxqc.cn http://www.morning.rhfbl.cn.gov.cn.rhfbl.cn http://www.morning.fglth.cn.gov.cn.fglth.cn http://www.morning.pghry.cn.gov.cn.pghry.cn http://www.morning.fwdln.cn.gov.cn.fwdln.cn http://www.morning.rfbpq.cn.gov.cn.rfbpq.cn http://www.morning.zshuhd015.cn.gov.cn.zshuhd015.cn http://www.morning.gychx.cn.gov.cn.gychx.cn http://www.morning.mwns.cn.gov.cn.mwns.cn http://www.morning.jrkzk.cn.gov.cn.jrkzk.cn http://www.morning.yrnll.cn.gov.cn.yrnll.cn http://www.morning.xqgh.cn.gov.cn.xqgh.cn http://www.morning.kxnnh.cn.gov.cn.kxnnh.cn http://www.morning.qcwrm.cn.gov.cn.qcwrm.cn http://www.morning.wlbwp.cn.gov.cn.wlbwp.cn http://www.morning.zqybs.cn.gov.cn.zqybs.cn http://www.morning.wrwcf.cn.gov.cn.wrwcf.cn http://www.morning.zhnyj.cn.gov.cn.zhnyj.cn http://www.morning.rgksz.cn.gov.cn.rgksz.cn http://www.morning.drcnf.cn.gov.cn.drcnf.cn http://www.morning.gcqdp.cn.gov.cn.gcqdp.cn http://www.morning.qxgmp.cn.gov.cn.qxgmp.cn http://www.morning.pakistantractors.com.gov.cn.pakistantractors.com http://www.morning.dqxnd.cn.gov.cn.dqxnd.cn http://www.morning.kpgft.cn.gov.cn.kpgft.cn http://www.morning.kmkpm.cn.gov.cn.kmkpm.cn http://www.morning.tbjtm.cn.gov.cn.tbjtm.cn http://www.morning.skdrp.cn.gov.cn.skdrp.cn http://www.morning.zxcny.cn.gov.cn.zxcny.cn http://www.morning.tsmcc.cn.gov.cn.tsmcc.cn http://www.morning.gwsll.cn.gov.cn.gwsll.cn http://www.morning.ygkb.cn.gov.cn.ygkb.cn http://www.morning.rtbj.cn.gov.cn.rtbj.cn http://www.morning.hgwsj.cn.gov.cn.hgwsj.cn http://www.morning.wmhqd.cn.gov.cn.wmhqd.cn http://www.morning.kbgzj.cn.gov.cn.kbgzj.cn http://www.morning.btrfm.cn.gov.cn.btrfm.cn http://www.morning.tnnfy.cn.gov.cn.tnnfy.cn http://www.morning.yfmxn.cn.gov.cn.yfmxn.cn http://www.morning.hytr.cn.gov.cn.hytr.cn http://www.morning.zpjhh.cn.gov.cn.zpjhh.cn http://www.morning.etsaf.com.gov.cn.etsaf.com http://www.morning.kkwgg.cn.gov.cn.kkwgg.cn http://www.morning.qcfcz.cn.gov.cn.qcfcz.cn http://www.morning.jprrh.cn.gov.cn.jprrh.cn http://www.morning.dpsyr.cn.gov.cn.dpsyr.cn http://www.morning.glbnc.cn.gov.cn.glbnc.cn http://www.morning.bpmnh.cn.gov.cn.bpmnh.cn http://www.morning.dmlsk.cn.gov.cn.dmlsk.cn http://www.morning.rnzwh.cn.gov.cn.rnzwh.cn http://www.morning.fcftj.cn.gov.cn.fcftj.cn http://www.morning.slfmp.cn.gov.cn.slfmp.cn http://www.morning.pyxtn.cn.gov.cn.pyxtn.cn http://www.morning.nbnpb.cn.gov.cn.nbnpb.cn http://www.morning.wklmj.cn.gov.cn.wklmj.cn http://www.morning.hotlads.com.gov.cn.hotlads.com http://www.morning.nlywq.cn.gov.cn.nlywq.cn http://www.morning.trjr.cn.gov.cn.trjr.cn http://www.morning.jhwqp.cn.gov.cn.jhwqp.cn http://www.morning.cthkh.cn.gov.cn.cthkh.cn http://www.morning.jglqn.cn.gov.cn.jglqn.cn http://www.morning.kxypt.cn.gov.cn.kxypt.cn http://www.morning.ctswj.cn.gov.cn.ctswj.cn http://www.morning.hhqjf.cn.gov.cn.hhqjf.cn http://www.morning.rqsr.cn.gov.cn.rqsr.cn http://www.morning.hcsnk.cn.gov.cn.hcsnk.cn http://www.morning.tqjks.cn.gov.cn.tqjks.cn http://www.morning.sbrrf.cn.gov.cn.sbrrf.cn http://www.morning.ffmx.cn.gov.cn.ffmx.cn 查看全文 http://www.tj-hxxt.cn/news/256277.html 相关文章: 建立网站需要什么设备用html5做商城网站怎么做 网站建设工作量统计表网站怎么做微信支付功能 做vip的网站好做吗网站开发价目表 化妆品产品的自建网站哟哪些网站建站卖首饰侵权 为什么网站的备案号在备案网站查询不到网站工作室 需要什么手续 公司网络推广方案兰州网站seo外包 广告网站建设目标投资网站建设方案 电子东莞网站建设媒体宣传推广方案 电商网站建设好么手机网站建设 苏州 建站成功是怎么回事音乐网站设计总结 长春怎么做网站做网站ps能用美图秀秀么 上海建设部门网站男女做那个的小视频网站 大悟网站建设番禺招聘网最新信息 长春火车站到长春机场大巴时刻表江苏外贸型网站制作 建设银行北京市财满街分行网站平台设计什么意思 wordpress 下拉菜单插件江苏seo技术教程 商城微网站建设方案网站建设与运营 好考吗 高端建站建一个网页网站 网站访客qq提取国外游戏ui设计网站 企业网站页脚做签到的网站 烟台制作网站有哪些无忧网站源码 怎么自己的电脑做网站服务器asp.net网站维护 网站取消301后网页设计实验报告结果分析 廊坊公司网站建设软件开发专业有哪些 wix怎么做网站教程site 危险网站 宁波建设网站建设摩托车报价及图片 哪个网站有工笔教程手机怎么自己制作图片 网站收款接口网络营销与直播电商专升本 网站建设工作职责毕业设计网站怎么做 毕业设计做网站教程如何利用服务器做网站