当前位置: 移动技术网 > IT编程>开发语言>Java > 荐 Spring官方文档阅读(一)之IoC容器

荐 Spring官方文档阅读(一)之IoC容器

2020年07月14日  | 移动技术网IT编程  | 我要评论

1.2.容器概述

经常在学习spring时,听到ApplicationContext,那么到底什么是ApplicationContext
1.BeanFatory的子接口
2.这个接口代表Spring IoC容器,负责实例化,配置和组装Bean
3.容器读取元数据,对象实例,配置文件,组装那些对象的指令
(这些配置元数据可能是XML,java注释,java代码,它更好的表达了我们的应用程序中,各个对象的依赖性)

new ClassPathXmlApplicationContext就是在使用IoC容器
Spring IoC容器不需要用户自己编写
在一个程序中,我们可以创建一个公共的实例对象 ClassPathXmlApplicationContext或者FileSystemXmlApplicationContext,通过这些实例对象来获取到ApplicationContext这个容器来对bean等信息进行操作,这就是使用了IoC容器

Spring容器的构建
可以通过少量的XML配置来指示容器使用JAVA注解或JAVA代码作为元数据格式,以声明方式启用对这些附加元数据的格式的支持

下图是spring工作图,我们的应用对象和配置元数据结合,之后生产一个,可以让我们完全配置和可执行的系统或应用程序
Spring的工作流程图

1.2.1.配置元数据

格式:

  1. 传统上元数据是以xml的格式提供
  2. Annotation-based configuration:spring 2.5后支持基于注解的方式配置元数据
  3. Java-based configuration:spring 3.0使用基于java配置的方式配置
    spring配置至少是一个bean定义组成的;如果是xml配置,那么bean的配置使用标签,嵌套在标签中;
<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--
        id:这个bean的标识字符串
        class:bean所引用的全类名
    -->
    <bean id="..." class="...">
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <bean id="..." class="...">
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <!-- more bean definitions go here -->

</beans>
定义外部bean

@Configuration,@Bean,@Import,和@DependsOn注释
如果是Java配置,在有@Configuration注解的类中,使用@Bean注解
这些bean的定义是组成应用的对象,不分为Controller,service等层,这种细粒度的区分,但是我们也可以使用AspectJ与Spring依赖注入域对象来控制创建IoC容器之外的对象

1.2.2.实例化容器

利用ApplicationContext的构造函数来读取外部的xml配置

ApplicationContext context =
         new ClassPathXmlApplicationContext("services.xml", "daos.xml");

在这里插入图片描述
导入外部资源

<beans>
    <import resource="services.xml"/>
    <import resource="resources/messageSource.xml"/>
    <import resource="/resources/themeSource.xml"/>

    <bean id="bean1" class="..."/>
    <bean id="bean2" class="..."/>
</beans>

services.xml是在当前文件路径下
messageSource和themeSource都在resources下 / 会被忽略
不建议使用 / …/来表示
在这里插入图片描述
引入外部XML配置,就可以使用被引入XML配置中的bean

1.2.3.使用容器

ApplicationContext是一个维护bean定义以及相互依赖的注册表的高级工厂的接口
通过T getBean(String name, Class requiredType)可以获取到bean实例

// create and configure beans
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");

// retrieve configured instance
PetStoreService service = context.getBean("petStore", PetStoreService.class);

// use configured instance
List<String> userList = service.getUsernameList();

不建议使用getBean方法,这样可以做到不依赖Spring API

总结:

简单的理解容器就是由真实存在的class和配置元数据(xml,java配置,注解)封装成的一个或多个bean集合,经过Spring包装和管理

本文地址:https://blog.csdn.net/weixin_45220428/article/details/107326385

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网