首页 > 代码库 > Spring笔记(4)-----<bean>的基本配置

Spring笔记(4)-----<bean>的基本配置

Spring容器成功需要具备的三个条件:

1)Spring框架的类包都已经放在应用程序的类路径下。

2)应用程序为Spring提供了完备的Bean配置信息。

    3)Bean的类都已经放在类路径下。

Spring启动时读取应用程序的Bean配置信息,在容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean的依赖关系,为上层应用提供准备就绪的运行环境。

Bean的配置信息是Bean的元数据信息,有4部分:

1)Bean的实现类。

2)Bean的属性信息。

3)Bean的依赖关系。

4)Bean的行为配置。

元数据在Spring容器内部对应物是有一个个BeanDefination形成的Bean注册表,实现了外部表示与内部信息的解耦。

Bean配置信息定义了Bean的实现以及它们之间的依赖关系,Spring容器根据配置信息在容器内部建立了注册表,,然后根据注册表加载,实例化Bean,并建立依赖关系,然后把这些Bean放入缓冲池中,以供外部程序调用。

Spring配置文件的文件头:

如下示例:

<?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/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
		http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
		http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
		>
</pre><p><span style="font-family:Microsoft YaHei;font-size:14px;">xmlns="http://www.springframework.org/schema/beans"没有空间名,默认命名空间。</span></p><p><span style="font-family:Microsoft YaHei;font-size:14px;">xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi命名空间,这个命名空间用于为每个文档命名空间指定相应的Schema样式文件,这个标准组织定义的标准命名空间。</span></p><p><span style="font-family:Microsoft YaHei;font-size:14px;">xmlns:context:这个命名空间是Spring配置的命名空间,是自定义的。</span></p><p><span style="font-family:Microsoft YaHei;font-size:14px;">命名空间的定义分2步:</span></p><p><span style="font-family:Microsoft YaHei;font-size:14px;">1)指定命名空间的名称。</span></p><p><span style="font-family:Microsoft YaHei;font-size:14px;">2)指定命名空间的Schema文件的位置,两个位置用空格或换行进行分隔,写一个统一的xsi:schemaLocation,所有命名空间的Schema文件都写在一起。</span></p><p><span style="font-family:Microsoft YaHei;font-size:14px;">Bean的基本配置:</span></p><p><span style="font-family:Microsoft YaHei;font-size:14px;"><span style="white-space:pre">	</span>SpringIOC容器中一个Bean即对应配置文件中的一个<bean>,id为这个Bean的名称,通过getBean(id)即可获取对应的Bean,class属性指定了Bean对应的实现类。</span><pre name="code" class="html"><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"   
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<bean id="userDao" class="com.test.dao.UserDao">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
	<bean id="userService" class="com.test.service.impl.UserServiceImpl" >
		<property name="userDao" ref="userDao" />
	</bean>
</beans>
而Spring的命名问题:id是唯一的,而且有特殊字符限制必须以字母开始,不能以逗号,空格之类的。如果我们想用特殊字符,可以使用<bean>的name属性,name属性可以有特殊字符,而且bean的name可以相同,如果重名以最后一个声明的为准,因为后面的Bean覆盖了前面的Bean.....所以我们还是使用id吧。如果一个Bean的id和name都没声明,那么Spring会根据class属性,你的包名类名去获取Bean.