Spring IOC容器

  在 Spring IOC 容器读取 Bean 配置创建 Bean 实例之前, 必须对它进行实例化. 只有在容器实例化后, 才可以从 IOC 容器里获取 Bean 实例并使用。

Spring 提供了两种类型的 IOC 容器实现

  • BeanFactory: IOC 容器的基本实现
  • ApplicationContext: 提供了更多的高级特性. 是 BeanFactory 的子接口。

  BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身;
  ApplicationContext 面向使用 Spring 框架的开发者,几乎所有的应用场合都直接使用 ApplicationContext 而非底层的 BeanFactory
无论使用何种方式, 配置文件时相同的。

第一种:使用XmlBeanFactory+Resource(不常用)

    //获得spring资源,加载配置文件
    Resource resource = new ClassPathResource("applicationContext.xml");

    //获得spring的容器实例,BeanFactory这是一个抽象的接口
    BeanFactory factory = new XmlBeanFactory(resource);

    //从容器中找到我们的bean,也就是我们的类
    HelloWorld = (HelloWorld)factory.getBean("hello");

第二种:使用ClassPathXmlApplicationContext(常用)

//从项目的类路径下加载application.xml
        
//1.创建Spring IOC容器  执行了无参构造方法和setXXX方法。
//ApplicationContext代表IOC容器,ClassPathXmlApplicationContext是它的实现类
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        
//2.从IOC容器中获取Bean对象
// 2.1 通过类型进行获取  要求在IOC容器里面是唯一的
//HelloWorld bean = context.getBean(HelloWorld.class);
//2.2 通过配置文件中bean对象的id获取
HelloWorld bean = (HelloWorld)context.getBean("hello");

//3.调用HelloWorld实例对象中的sayHello()方法
bean.sayHello();

第三种:使用FileSystemXmlApplicationContext

    //从文件系统中加载配置文件 
    ApplicationContext context = new FileSystemXmlApplicationContext("E:\\JavaWorkSpace\\idea_project\\SpringDemo\\src\\main\\resources\\applicationContext.xml");
    HelloWorldhi = (HelloWorld)context.getBean("hello");

第四种:在Servlet中加载配置文件

   //从WEB-INF下加载配置文件 
   ServletContext servletContext = request.getSession().getServletContext();
   ApplicationContext context= WebApplicationContextUtils.getWebApplicationContext(servletContext);

   HelloWorldhi = (HelloWorld)context.getBean("hello");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值