spring:beanfactory与applicationcontext的设计
beanfactory接口提供的方法:getBean,getBeanProvider,containsBean,isSingleton,getType,getAliases
listableBeanFactory: 不会取到手动注册的bean,为什么要这么做呢,因为有些bean属于 SpringFramework 内部使用的,这样做的目的是 SpringFramework 不希望咱开发者直接操控他们,于是就使用了这种方式来隐藏它们。
此外:除了 getBeanDefinitionCount 和 containsBeanDefinition 之外,此接口中的方法不适用于频繁调用,方法的实现可能执行速度会很慢。
public class ListableBeanFactoryApplication {
public static void main(String[] args) throws Exception {
ClassPathResource resource = new ClassPathResource("container/listable-container.xml");
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(beanFactory);
beanDefinitionReader.loadBeanDefinitions(resource);
// 直接打印容器中的所有Bean
System.out.println("加载xml文件后容器中的Bean:");
Stream.of(beanFactory.getBeanDefinitionNames()).forEach(System.out::println);
System.out.println();
// 手动注册一个单实例Bean
beanFactory.registerSingleton("doggg", new Dog());
// 再打印容器中的所有Bean
System.out.println("手动注册单实例Bean后容器中的所有Bean:");
Stream.of(beanFactory.getBeanDefinitionNames()).forEach(System.out::println);
}
}
applicationContext:在BeanFactory基础上扩展了生命周期管理、Bean后置处理器的支持、BeanFactory后置处理器的支持、 消息转换服务(国际化)、事件发布机制(事件驱动)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了