ApplicationContext 与 BeanFactory 区别(MS)

1. 从继承关系上来说,BeanFactory  是 的父类。BeanFactory 只是提供了基础操作Bean的方法,ApplicationContext除了拥有父类的基础操作之外,还提供了自己独有的功能

2. 从性能方面上来说,ApplicationContext 一次性加载并初始化所有的Bean对象,但是BeanFactory 是需要哪个Bean才去加载哪个Bean

 ApplicationContext 是在创建的时候就会将所有的bean初始化第一次使用bean的时候启动比较慢,但是可能会造成资源浪费。BeanFactory不浪费任何资源,第一次加载bean比较

import beans.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @program: first-spring
 * @description:  通过ApplicationContext来获取对象
 * @author: DRY
 * @create: 2022-07-03 12:47
 **/
public class App {
    public static void main(String[] args) {
        //1. 先得到上下文对象
        ApplicationContext context =
                new ClassPathXmlApplicationContext("spring-config.xml");
        //2. 从spring上下文对象中获取bean
        User user = (User)context.getBean("user");
        //3. 使用对象(可以不使用)
        user.sayHi("张丹");

    }
}

 

import beans.User;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

/**
 * @program: first-spring
 * @description:  通过BeanFactory 来获取spring上下文对象
 * @author: DRY
 * @create: 2022-07-03 13:06
 **/
public class App2 {
    public static void main(String[] args) {
        //1.先得到BeanFactory来获取对象
        BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
        //2. 获取bean
        User user = (User) beanFactory.getBean("user");
        //3. 使用bean
        user.sayHi("李四");
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!-- 表示将一个bean对象存储到spring中(可以有多个bean标签)-->
    <bean id="user" class="beans.User"></bean>
</beans>

 

 这两个user必须保持相同。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值