Spring Bean 定义
Bean 定义
Bean对象是构成我们应用程序重要的一部分,也是由Spring IOC 容器所管理的,一直都提到bean这个东西,那么,它具体是什么呢,首先,bean是一个被实例化、组装且通过Spring IOC容器管理的 对象,我们通过XML文件对它进行配置。
- 如何创建一个Bean
首先我们来看一下Bean的各种属性
属性 | 描述 |
---|---|
class | 这个属性是强制性的,并且指定用来创建 bean 的 bean 类。 |
name | 这个属性指定唯一的 bean 标识符。在基于 XML 的配置元数据中,你可以使用 ID 和/或 name 属性来指定 bean 标识符。 |
scope | 这个属性指定由特定的 bean 定义创建的对象的作用域,它将会在 bean 作用域的章节中进行讨论。 |
constructor-arg | 它是用来注入依赖关系的,之后会提到。 |
properties | 它是用来注入依赖关系的,之后会提到。 |
autowiring mode | 它是用来注入依赖关系的,之后会提到。 |
lazy-initialization mode | 延迟初始化的 bean 告诉 IoC 容器在它第一次被请求时,而不是在启动时去创建一个 bean 实例。 |
initialization 方法 | 在 bean 的所有必需的属性被容器设置之后,调用回调方法。它将会在 bean 的生命周期章节中进行讨论。 |
destruction 方法 | 当包含该 bean 的容器被销毁时,使用回调方法。它将会在 bean 的生命周期章节中进行讨论。 |
Spring IOC容器和Bean的关系是什么样的呢
在我看来,Spring容器和Bean是将Bean交给容器进行管理和配置
- Spring IOC容器读取Bean配置信息,Bean配置信息由XML文件、JAVA类@Configuration、以及注解@Autowired进行读取
- 根据Spring容器中的Bean注册表进行实例化Bean,将装配的Bean进行实例化
- 将Bean的实例放到Spring容器中
- 最后当应用程序需要使用Bean的时候到Spring容器中进行获取
Spring 配置元数据
Spring IOC 容器完全是由市级编写的配置元数据的格式进行解耦,基本基于这三个方法将数据提供给Spring容器
- 基于XML的配置文件
- 基于注解的配置
- 基于Java的配置
这里主要只讲基于XML的方式,其他方式后续会讲到
<?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
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- 一个简单的Bean定义 -->
<bean id="..." class="...">
<!-- Bean的配置 -->
</bean>
</beans>
我们对这个文件进行一 一讲解
xmlns="http://www.springframework.org/schema/beans"
,它是默认命名空间:它没有空间名,用于Spring Bean的定义;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
,xsi命名空间:这个命名空间用于为每个文档中命名空间指定相应的Schema样式文件,是标准组织定义的标准命名空间。
提示:对于基于 XML 的配置,Spring 2.0 以后使用 Schema 的格式,使得不同类型的配置拥有了自己的命名空间,使配置文件更具扩展性。
- 当我们需要使用到其他命名空间的时候,可以通过复制
xmlns="http://www.springframework.org/schema/beans"
,将xmlns
后加上:context
并将最后的beans修改成context
,然后配置一下xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
,复制这两个链接并把里面所有的beans
修改为context
,最终效果为
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/xmlns:context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- 必须配置context命名空间才可以用 -->
<context:component-scan base-package="com.zy.controller" />
<!-- 一个简单的Bean定义 -->
<bean id="..." class="...">
<!-- Bean的配置 -->
</bean>
</bean
其他命名空间也可以套用这个模板进行更改,更改方式和上面讲的一样。
总结
以上就是Spring Bean定义的讲解,主要讲解了Bean是什么,Spring容器和它有什么关系,它们是怎么进行装配的以及如果基于XML去配置Bean,下一篇会讲解Spring Bean的作用域和生命周期的内容。
后续的每一篇讲解内容会尽量减少并仔细讲解,讲太多的话不容易去仔细理解领悟。