Spring容器在启动的时候就会加载配置
Spring中Bean的属性
import
import属性一般适用于一个团队的使用,他可以将多个文件集合成一个使用
<import resource="Beans.xml"/>
依赖注入
依赖注入分为三种方式如下:
1) 构造器注入
2) setter注入【重点】
我们可以通过 Bean 的 setter 方法,将属性值注入到 Bean 的属性中。
在 Spring 实例化 Bean 的过程中,IoC 容器首先会调用默认的构造方法(无参构造方法)实例化 Bean(Java 对象),然后通过 Java 的反射机制调用这个 Bean 的 setXxx() 方法,将属性值注入到 Bean 中。
使用 setter 注入的方式进行属性注入,大致步骤如下:
在 Bean 中提供一个默认的无参构造函数(在没有其他带参构造函数的情况下,可省略),并为所有需要注入的属性提供一个 setXxx() 方法;
在 Spring 的 XML 配置文件中,使用 及其子元素 对 Bean 进行定义;
在 元素内使用 元素对各个属性进行赋值。
依赖 : bean对象的创建依赖容器
注入: bean对象中的属性,由容器创建
注入集合
<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 id="course" class="net.biancheng.c.Course">
<property name="courseId" value="1"></property>
<property name="courseName" value="Java课程"></property>
</bean>
<bean id="course2" class="net.biancheng.c.Course">
<property name="courseId" value="2"></property>
<property name="courseName" value="PHP课程"></property>
</bean>
<bean id="course3" class="net.biancheng.c.Course">
<property name="courseId" value="3"></property>
<property name="courseName" value="C语言课程"></property>
</bean>
<bean id="javaCollection" class="net.biancheng.c.JavaCollection">
<!--数组类型-->
<property name="courses">
<array>
<ref bean="course"></ref>
<ref bean="course2"></ref>
<ref bean="course3"></ref>
</array>
</property>
<!--List 类型-->
<property name="list">
<list>
<value>张三</value>
<value>李四</value>
<value>王五</value>
<value>赵六</value>
</list>
</property>
<!--Map 类型-->
<property name="maps">
<map>
<entry key="JAVA" value="java"></entry>
<entry key="PHP" value="php"></entry>
</map>
</property>
<!--Set 类型-->
<property name="sets">
<set>
<value>MySQL</value>
<value>Redis</value>
</set>
</property>
</bean>
</beans>
3) 拓展命名空间p与c首先我们需要在配置文件的 元素中导入以下 XML 约束xmlns:p="http://www.springframework.org/schema/p"
在导入 XML 约束后,我们就能通过以下形式实现属性注入。<bean id="Bean 唯一标志符" class="包名+类名" p:普通属性="普通属性值" p:对象属性-ref="对象的引用">
c 命名空间注入
c 命名空间是构造函数注入的一种快捷实现方式。通过它,我们能够以 属性的形式实现构造函数方式的属性注入,而不再使用嵌套的 元素,以实现简化 Spring 的 XML 配置的目的
首先我们需要在配置文件的 元素中导入以下 XML 约束。xmlns:c="http://www.springframework.org/schema/c"
在导入 XML 约束后,我们就能通过以下形式实现属性注入。
<bean id="Bean 唯一标志符" class="包名+类名"
c:普通属性="普通属性值" c:对象属性-ref="对象的引用">