这里主要是一个对于后面的铺垫,铺垫一个元信息的概念,所以这一节也非常简单,内容也比较少。

1. Spring 中的元信息

不管是八股文也好,还是哪里,或许你有听过 BeanDefinition 它其实就是 Spring 中对于每个 Bean 定义的元信息,它其中保存了定义或者说描述一个 Bean 的定义,比如:

  • Bean 的全限定名 className
  • Bean 的作用域 scope
  • Bean 是否延迟加载 lazy
  • Bean 的工厂 Bean 名称 factoryBean
  • Bean 的构造方法参数列表 constructorArgumentValues
  • Bean 的属性值 propertyValues

    2. IOC 容器的元信息

    所以对于元信息来说,似乎好理解一些了,就像类和对象的感觉一样,类就是描述了对象的原信息,或者说数据库表结构也是。
    而 IOC 容器中的元信息主要在 beans 和 context 标签中体现。

    2.1 beans

    image.png
配置元信息 含义 / 作用 默认值
profile 基于环境的配置 “”
default-autowire 默认的自动注入模式(不需要声明 @Autowired
等注解即可注入组件)
default(no)
default-autowire-candidates 满足指定属性名规则的属性才会被自动注入 “”
default-init-method 全局 bean 的初始化方法 “”
default-destroy-method 全局 bean 的销毁方法 “”
default-lazy-init 全局 bean 是否延迟加载 default(false)
default-merge 继承父 bean 时直接合并父 bean 的属性值 default(false)

上面只是写了了 标签的属性,而beans 的命名空间里还有两个常用的标签:

配置元信息 含义 / 作用 使用方式举例
给指定的 bean 指定别名
导入外部现有的 xml 配置文件

2.2 context

image.png

配置元信息 含义 / 作用
<context:annotation-config/> 开启注解驱动
<context:component-scan/> 开启组件扫描
<context:property-placeholder/> 引入外部的资源文件( properties xml yml 等)
<context:property-override/> 指定配置源会覆盖全局配置(可用于配置覆盖)
<context:spring-configured/> 可以对没有注册到 IOC 容器的 bean 实现依赖注入
<context:load-time-weaver/> 与 AOP 相关(放到 AOP 章节介绍)
<context:mbean-server/> 暴露应用运行状态监控(与 JMX 管理监控有关)
<context:mbean-export/> 注册 MBean 到 JMX 实现运行状态监控(与 JMX 管理监控有关)