【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
推荐阅读
- flask 中xx.init_app(app)方法
- 乐视超级电视s40 air价格多少钱?乐视电视s40 air价格
- 乐视超级电视s50 air价格多少钱?乐视s50 air超级电视价格
- ipad air2设置怎样?ipad air2设置参数
- ipad air2尺寸多大?ipad air2屏幕尺寸大小
- 天猫魔筒是啥?天猫魔筒技巧设置
- 天猫魔筒申请成功后啥时候发货?天猫魔筒申请成功后发货时间
- 天猫魔筒价格多少钱?天猫魔筒安全版价格
- 天猫魔筒与小米路由器哪一个好?天猫魔筒vs小米路由器设置比较