Spring学习6(1)Spring配置概述以及Bean基本配置

本文深入探讨Spring框架中Bean的配置细节,包括配置信息的组成部分、基于XML的配置方式、命名空间的定义及其重要性,以及Bean的基本配置方法。通过实例说明如何在Spring容器中定义和使用Bean。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring学习6(1)

 学习5中主要学习的是Ioc的容器的整体概念,这里(即是书中第5章)主要开始对Bean的配置进行学习。

Spring配置概述

Spring容器高层视图

 要使应用程序中的Spring容器成功启动,需要同时具备以下三方面条件:

  1. Spring 框架的类包都已经放到应用程序的类路径下
  2. 应用程序为spring提供了完备的Bean配置信息
  3. Bean的类都已经放到应用程序的类路径下

 具体关系与过程如下图所示:

在这里插入图片描述
 Bean配置信息是Bean的元数据信息,其由下列四个方面组成:

  1. Bean的实现类
  2. Bean的属性信息:如用户名,密码等
  3. Bean的依赖关系
  4. Bean的行为配置:如生命周期范围及各个过程的回调函数

基于XML的配置

 spring2.0后xml使用Schema格式,让不同类型的配置拥有了自己的命名空间,使配置文件更具扩展性和简易性。

<?xml version="1.0" encoding="UTF-8" ?>
<beans
<!-- 默认命名空间 -->
xmlns="http://www.springframework.org/schema/beans" 
<!--  xsi标准命名空间,用于指定自定义命名空间的Schema文件-->   
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
<!-- aop为自定义命名空间名称的简称,后面的url是命名空间的全称,指定具体Schema文件 -->
xmlns:aop="http://www.springframework.org/schema/aop"
<!-- 为每个命名空间指定具体Schema文件 -->
xsi:schemaLocation=
	"http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
	http://www.springframework.org/schema/aop
	http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
	<!-- 默认命名空间的配置 -->
	<bean id="foo" class="com.smart.Foo"/>
	<!-- aop命名空间的配置 -->
	<aop:config>
		<aop:advisor pointcut="execution(* *..PetStoreFacade.*(..))"
		advice-ref="texAdvice"/>
	</aop:config>
	
	</beans>
	

 在上面的代码用xmlns的方式对文档所引用的命名空间进行申明,上述代码定义了三个命名空间:

  1. 默认命名空间,没有空间名,用于Spring Bean的定义
  2. xsi标准命名空间,用于为每个文档中的命名空间指定相应的Schema样式文件。
  3. aop命名空间,是spring配置Aop的命名空间,即是一种自定义的命名空间。
命名空间的定义

 命名空间的定义分为两个步骤:

  1. 指定命名空间的名称
  2. 指定命名空间的schema文档格式文件的位置,用空格或回车换行进行分隔。

 在第一步中需要指定命名空间的缩略名和全名,如上述代码中定义的:
xmlns:aop="http://www.springframework.org/shema/aop"。aop为命名空间的别名,文档后面的元素可以通过命名空间名加以区别,如<aop:config>等。
 如果命名空间的别名为空,则是默认命名空间,如<beans/><bean/>等。

Bean基本配置

 在Spring容器的配置文件中定义一个简要的Bean配置片段如下:

<bean id="Bean的名称" class="Bean的类名"/>

 容器可以直接根据id的名字利用getBean(id)的方法得到所需的Bean。它是在容器中起到定位查找的作用,在外部程序中是和spring Ioc容器进行交互的桥梁。

 一般情况下,我们需要为一个Bean指定一个id属性作为Bean的名称,id在IoC容器中必须是唯一的,而且id的命名需要满足XML对id的命名规范,必须以字母开始,以完整结束符号结束。
 在实际情况下,用户可以使用name的属性来提供BeanName,一个bean可以有多个id,多个name,可以用逗号,分号或者空格进行分隔,如:
<bean name="#car1, 123, $car"...>
但是在获取Bean的时候如果有两个相同neam时,会采用后定义的bean。
 如果id和name两个属性都没有指定,那么会将Bean的类名作为id,多个实现类相同的匿名bean如下所示时:

<bean class="class.smart.simple.Car"/>
<bean class="class.smart.simple.Car"/>
<bean class="class.smart.simple.Car"/>

其id就分别设为:

com.smart.simple.Car
com.smart.simple.Car#1
com.smart.simple.Car#2

后续若还有更多匿名类则以此类推。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值