string bean,Spring-beans-BeanDefinitionRegistry

 2023-10-15 阅读 31 评论 0

摘要:本文與BeanDefinitionReader有一定關聯 BeanDefinitionRegistry接口用來注冊BeanDefinition存放到指定的位置,一般情況下,BeanDefinitionRegistry接口的實現類中都會有一個map屬性,調用registerBeanDefinition方法,其實就是將BeanDefinition放到m

本文與BeanDefinitionReader有一定關聯

BeanDefinitionRegistry接口用來注冊BeanDefinition存放到指定的位置,一般情況下,BeanDefinitionRegistry接口的實現類中都會有一個map屬性,調用registerBeanDefinition方法,其實就是將BeanDefinition放到map中,下面是一個實現

public class MyBeanDefinitionRegistry implements BeanDefinitionRegistry {private Map<String, BeanDefinition> bdMap = new HashMap<>();//該方法可用于spring動態注入bean@Overridepublic void registerBeanDefinition(String beanName, BeanDefinition beanDefinition)throws BeanDefinitionStoreException {bdMap.put(beanName, beanDefinition);System.out.println(String.format("調用方法:%s", "registerBeanDefinition"));}@Overridepublic boolean containsBeanDefinition(String beanName) {System.out.println(String.format("調用方法:%s", "containsBeanDefinition"));return bdMap.containsKey(beanName);}// 省略其他抽象方法// 省略其他抽象方法
}

下面是一個main方法

public static void main(String[] args) {// 下面這個類可以理解成也是一個beanDefinitionReaderClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(new MyBeanDefinitionRegistry());scanner.scan("基礎包名");
}

動態注入bean

public static void main(String[] args) {AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();ctx.refresh();// 可以在我們的系統里獲取到ApplicationContext// 然后轉換成BeanDefinitionRegistry即可動態注入BeanDefinitionRegistry bdr = (BeanDefinitionRegistry) ctx;bdr.registerBeanDefinition("abc", new RootBeanDefinition(Abc.class));Abc cb = ctx.getBean(Abc.class);System.out.println(cb);
}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/137096.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息