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后置处理器的支持、 消息转换服务(国际化)、事件发布机制(事件驱动)

posted @   无极是一种信仰  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示