5_BeanFactory与ApplicationContext的区别

package com.aping.ui;

import com.aping.service.IAccountService;
import com.aping.service.impl.IAccountServiceImpl;
import javafx.application.Application;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

/**
 * 获取spring的IoC核心容器,并根据id获取对象
 *
 * ApplicationContext的三个常用实现类
 *      ClassPathXmlApplicationContext:它可以加载类路径下的配置文件,要求配置文件必须在类路径下,否则加载不了
 *      FileSystemXmlApplicationContext:它可以加载磁盘任意路径下的配置文件(必须有访问权限)
 *      AnnotationConfigApplicationContext:它是用于读取注解创建容器的
 *
 * 核心容器的两个接口引发出的问题
 *  ApplicationContext:单例对象适用   更多采用此接口
 *      它在构建核心容器时,创建对象采取的策略是采用立即加载的
 *      方式,也就是说,只要一读取完配置文件马上就创建配置文件中配置的对象
 *  BeanFactory:多例对象适用
 *      它在构建核心容器时,创建对象采取的策略是采用延迟加载的方式,也就是
 *      什么时候根据id获取对象了,什么时候才真正的创建对象
 */
public class Client {
    public static void main(String[] args) throws InstantiationException, IllegalAccessException {
        //1.获取核心容器对象
        ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
            //FileSystemXmlApplicationContext的用法
            //ApplicationContext ac = new FileSystemXmlApplicationContext("D:\\java\\workspace\\day01_03spring\\src\\main\\resources");
        //2.根据id获取Bean对象
        IAccountService service = (IAccountService)ac.getBean("accountService");
            //或者不使用强转,而是再传入字节码,由ac完成强转
            //IAccountService service = ac.getBean("accountService",IAccountService.class);
        System.out.println(service);

        //------BeanFactory-------
        Resource resource = new ClassPathResource("bean.xml");
        BeanFactory factory = new XmlBeanFactory(resource);
        IAccountService service1 = (IAccountService)factory.getBean("accountService");
        System.out.println(service1);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值