码迷,mamicode.com
首页 > 移动开发 > 详细

bean工厂和ApplicationContext

时间:2018-01-13 21:01:35      阅读:42      评论:0      收藏:0      [点我收藏+]

标签:org   getbean   value   private   pos   bsp   white   cto   work   

获取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
 
 
 
 

bean工厂和ApplicationContext

标签:org   getbean   value   private   pos   bsp   white   cto   work   

原文地址:https://www.cnblogs.com/SunshineLittleCat/p/8280013.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!