• spring学习(十四)--使用ApplicationContext和BeanFactory工厂应用上下文容器


    1、ApplicationContext 应用上下文容器取

    ApplicationContext ac = new ClassPathXmlApplicationContext("spring-config.xml");

    当这句代码被执行,spring-config.xml文件中配置的bean就会被实例化。(但要注意bean的生命周期要为singleton),也就是说,不管没有getBean(),使用上下文容器获取bean,就会实例化该bean。

    2、Bean工厂容器取

    BeanFactory factory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));

    这句代码被执行,spring-config.xml文件中配置的bean不会被实例化,即光实例化容器,并不会实例化bean
    而是在执行以下代码时才会被实例化,即使用bean的时候:
    factory.getBean("beanId");

    验证:

    1、创建一个类LittleBall,重写该类的构造方法,打印一行日志。

    public class LittleBall implements GirlsInterface{/**
         * 重写构造函数,输出信息,来确定bean初始化时间
         */
        public LittleBall(){
            System.out.println("Hello, I am little ball! I am very beautiful!");
        }
    }

    2、编写spring配置文件spring-beans.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns= "http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mvc="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd ">
        
        <bean id = "littleBall" class="serviceImpl.LittleBall"></bean>
        
    </beans>

    3、编写main方法测试:

        public static void main(String[] args) {
            ApplicationContext ac = new ClassPathXmlApplicationContext("spring-beans.xml");
            
            BeanFactory controllerFactory = new XmlBeanFactory(new ClassPathResource("spring-beans.xml"));
            LittleBallController littleBallController = (LittleBallController)controllerFactory.getBean(LittleBallController.class);
        }

    结果

    1、在ApplicationContext ac = new ClassPathXmlApplicationContext("spring-beans.xml");执行时候,打印了"Hello, I am little ball! I am very beautiful!"

    2、在controllerFactory.getBean(LittleBallController.class);执行时候,打印了"Hello, I am little ball! I am very beautiful!"

    在移动开发中,即项目运行在移动设备中使用BeanFactory(节约内存,所以,你想节约内存开发就是使用bean工厂,但速度会受影响),但大部分的项目都是使用ApplicationContext(可以提前加载,缺点是消耗一点内存) 

    
    
    
    个人理解,如有错误,欢迎指正!
  • 相关阅读:
    web socket RFC6455 frame 打包、解包
    Cacti 加入多台主机带宽汇聚
    C-链表实现,保存文件,评估-单项选择题系统课程设计---ShinePans
    ios7.1安装提示"无法安装应用程序 由于证书无效"的解决方式二(dropbox被封项目转移到Appharbor上)
    【模板】第二类斯特林数·列
    2018-8-10-win10-uwp-slider-隐藏显示数值
    2018-8-10-win10-uwp-slider-隐藏显示数值
    2019-1-27-WPF-使用-ItemsPanel-修改方向
    2019-1-27-WPF-使用-ItemsPanel-修改方向
    2018-8-10-win10-uwp-x_Bind-无法获得资源
  • 原文地址:https://www.cnblogs.com/gllegolas/p/11753068.html
Copyright © 2020-2023  润新知