bean工厂和ApplicationContext

【bean工厂和ApplicationContext】学向勤中得,萤窗万卷书。这篇文章主要讲述bean工厂和ApplicationContext相关的知识,希望能为你提供帮助。
获取bean的两种方法 1. 从applicationcontext 应用上下文容器中获取 2. 从bean 工厂获取 bean 的区别   使用ApplicationContext 获取bean的例子   我们定义一个Student 类,然后让spring去调用它 Student.java package com.getBean;   /** * Created by admin on 2017/12/9. */ public class Student { private String name; private int age; private int id;   public String getName() { return name; }   public void setName(String name) { this.name = name; System.out.print(name); }   public int getAge() { return age; }   public void setAge(int age) { this.age = age; }   public int getId() { return id; }   public void setId(int id) { this.id = id; } }   // 把Student 类加入到spring配置文件, < bean id="student" class="com.getBean.Student"> < property name="name"> < value> 胖子哟< /value> < /property> < property name="age"> < value> 1< /value> < /property> < property name="id"> < value> 1< /value> < /property> < /bean>   // 通过ApplicationContext 调用bean package com.getBean; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.beans.factory.BeanFactory; import org.springframework.core.io.ClassPathResource;   /** * Created by admin on 2017/12/9. * 介绍两种获取bean的方式 与其他们的不同 * 1. 从ApplicationContext 容器上下文获取bean * 2. 从BeanFactory 获取bean */ public class runGetBean { public static void main(String[] args){ // 1、通过ApplicationContext获取bean // 当我们调用 new ClassPathXmlApplicationContext 则spring配置文件中的bean 就会被实例化 该bean的scope 是singleton 单实例的 ApplicationContext app = new ClassPathXmlApplicationContext("com/getBean/beans.xml"); app.getBean("student");   } }   这种方式获取bean 则在创建 ApplicationContext 实例时会自动实例化配置文件中的所有bean   2. 使用bean 工厂来获取bean   package com.getBean; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.beans.factory.BeanFactory; import org.springframework.core.io.ClassPathResource;   /** * Created by admin on 2017/12/9. * 介绍两种获取bean的方式 与其他们的不同 * 1. 从ApplicationContext 容器上下文获取bean * 2. 从BeanFactory 获取bean */ public class runGetBean { public static void main(String[] args){ // 1、通过ApplicationContext获取bean // 当我们调用 new ClassPathXmlApplicationContext 则spring配置文件中的bean 就会被实例化 该bean的scope 是single 单实例的 // ApplicationContext app = new ClassPathXmlApplicationContext("com/getBean/beans.xml"); // app.getBean("student"); // 通过bean 工厂来获取bean BeanFactory factory = new XmlBeanFactory(new ClassPathResource("com/getBean/beans.xml")); factory.getBean("student"); } }   使用bean工厂时则是只有你调用了getBean 方法时,bean实例才会被创建   在大部分的项目开发中都是使用ApplicationContext方式获取bean, 因为它可以提前加载,速度较快 而在移动设备中则多数使用bean工厂,因为其节约内存   总结: 如果使用ApplicationContext 则配置的bean 如果是singleton 不管你是否使用,都会被实例化,好处是可以预先加载,坏处是浪费内存 如果是使用BeanFactory 则配置的bean 不会被马上实例化,当你使用的时候才会被实例化,好处是节约内存 一般如果没有特殊要求,则应该使用ApplicationContext        

    推荐阅读