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");
zmt0104
发布了41 篇原创文章 · 获赞 3 · 访问量 1468
私信 关注

本文链接http://element-ui.cn/news/show-1184.aspx