• Spring系列.IOC容器简介


    IOC容器简介

    我们经常说Spring是一个IOC容器,Spring中这么多代码,那么到底哪些类是IOC容器的主要表现形式呢?其实在Spring中IOC容器的主要表现形式是BeanFactory和ApplicationContext这两个接口。这两个接口的具体实现类就可以看成是IOC容器在Spring中的具体体现。

    BeanFactory提供了最基本的IOC和依赖注入功能,ApplicationContext继承了BeanFactory,在BeanFactory的基础上添加了很多新功能,主要包括国际化、事件分发机制(ApplicationEvent)、资源访问(Resource)等功能。在实际的开发过程中,一般都会选择ApplicationContext系列的容器实现。下面列举下BeanFactory和ApplicationContext系列容器的常见实现类。

    上图是BeanFactory系列容器的继承图,需要重点关注的是DefaultListableBeanFactory,这个类是Spring默认使用基础容器类。在每个ApplicationContext容器中都使用这个基础容器。

    3eb75ca13851da9109efd5dded782ac2.png

    上图是ApplicationContext系列的容器实现。常用的有ClasspathXmlApplicationContext和XmlWebApplicationContext。Spring Boot还推出WebServerApplicationContext系列容器,从名字可以看出这个系列的容器是支持内嵌Web Server功能的。但是由于本博客介绍的是基础Spring FrameWork功能,就没列举WebServer系列容器。感兴趣的可以自己去看下Spring Boot的相关内容。

    使用IOC容器

    初始化容器的代码

        //ClassPathXmlApplicationContext支持多次refresh容器
    	ApplicationContext context = new ClassPathXmlApplicationContext("services.xml","daos.xml");
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/config/services.xml");
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/${placeHolder}/services.xml");
        //使用groovy形式
        ApplicationContext context = new GenericGroovyApplicationContext("services.groovy", "daos.groovy");
        //先new再refresh()
    	//不支持重复refresh
        GenericApplicationContext context = new GenericApplicationContext();
        new XmlBeanDefinitionReader(context).loadBeanDefinitions("services.xml", "daos.xml");
        context.refresh();
    

    ClassPathXmlApplicationContext支持classpath:/${placeHolder}/services.xml这种以classpath打头的入参

    有时Spring的配置会比较多,如果将所有的配置都放在一个文件中会显得比较乱。这时我们可以将同类别的配置放在一个配置文件中。然后再用impoer导入到一个文件中即可.

    <beans>
        <import resource="services.xml"/>
        <import resource="resources/messageSource.xml"/>
        <import resource="/resources/themeSource.xml"/>
        <bean id="bean1" class="..."/>
        <bean id="bean2" class="..."/>
    </beans>
    

    配置形式

    Spring支持多种形式的配置:传统的xml形式,注解形式和Java code形式。

  • 相关阅读:
    Caused by: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。
    jauery加入项目中,但是在页面中显示没有找到这个文件--springMVC框架
    SpringMVC中Controller和RestController
    firefox与chrome中对select下拉框中的option支持问题
    Spring与jsp表达式的产生的问题
    javaScript基础练习题-下拉框制作(神奇的代码)
    javaScript基础练习题-下拉框制作(JQuery)
    云,git,blog,感想
    javaScript基础练习题-下拉框制作(CSS)
    javaScript基础练习题-下拉框制作
  • 原文地址:https://www.cnblogs.com/54chensongxia/p/13065191.html
Copyright © 2020-2023  润新知