<!-- Bean元素:使用该元素描述须要spring容器管理的对象
class属性:被管理对象的完整类名.
name属性:给被管理的对象起个名字.得到对象时根据该名称得到对象.
能够重复.可使用特殊字符.
id属性: 与name属性如出一辙.
名称不可重复.不能使用特殊字符.
结论: 尽可能使用name属性.
-->
<bean name="student" class="com.lsk.Student" ></bean>
<!--
能够经过import属性导入其余spring配置文件
<import resource="路径/*.xml"/>
-->
(1)、IOC:Inverse Of Control,即控制反转,将对象建立的方式交给了 Spring 容器;java
(2)、DI:Dependency Injection,即依赖注入,IOC 的实现须要 DI 支持。web
(1)、Spring BeanFactory 容器
它是最简单的容器,给 DI 提供了基本的支持,它用 org.springframework.beans.factory.BeanFactory 接口来定义。BeanFactory 或者相关的接口,如 BeanFactoryAware,InitializingBean,DisposableBean,在 Spring 中仍然存在具备大量的与 Spring 整合的第三方框架的反向兼容性的目的。spring
在 Spring 中,有大量对 BeanFactory 接口的实现。其中,最常被使用的是 XmlBeanFactory 类。这个容器从一个 XML 文件中读取配置元数据,由这些元数据来生成一个被配置化的系统或者应用。app
在资源宝贵的移动设备或者基于 applet 的应用当中, BeanFactory 会被优先选择。不然,通常使用的是 ApplicationContext,除非你有更好的理由选择 BeanFactory。框架
(2)、Spring ApplicationContext 容器函数
该容器添加了更多的企业特定的功能,例如从一个属性文件中解析文本信息的能力,发布应用程序事件给感兴趣的事件监听器的能力。该容器是由 org.springframework.context.ApplicationContext 接口定义。spa
ApplicationContext 包含 BeanFactory 全部的功能,通常状况下,相对于 BeanFactory,ApplicationContext 会被推荐使用。code
最常被使用的 ApplicationContext 接口实现(类):xml
FileSystemXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你须要提供给构造器 XML 文件的完整路径对象
ClassPathXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你不须要提供 XML 文件的完整路径,只需正确配置 CLASSPATH 环境变量便可,由于,容器会从 CLASSPATH 中搜索 bean 配置文件。
(1)、set方法注入:
" class="com.lsk.Student" ><bean name="student
<!--值类型注入: 为stu对象中名为name的属性注入"孔乙己"做为值 -->
<property name="name" value="孔乙己" ></property>
<property name="age" value="22" ></property>
<property name="grade" value="大三" ></property>
<property name="rang" value="1" ></property>
<!-- 引用类型注入: 为course属性注入下方配置的course对象 -->
<property name="course" ref="course" ></property>
</bean>
<!-- 将course对象配置到容器中 -->
<bean name="course" class="com.lsk.Course" >
<property name="name" value="Java开发" ></property>
<property name="page" value="112" ></property>
</bean>
(2)、构造函数注入:
<bean name="stu1" class="com.spring.bean.Student" >
<!-- name属性: 构造函数的参数名 -->
<!-- index属性: 构造函数的参数索引 -->
<!-- type属性: 构造函数的参数类型-->
<constructor-arg name="name" index="0" type="java.lang.Integer" value="compasser" ></constructor-arg>
<constructor-arg name="course" ref="course" index="1" ></constructor-arg>
</bean>