Spring的Ioc容器,是Spring的核心内容: 作用:对象的创建和处理对象的依赖关系。
Spring容器创建对象有以下几种方式:
1:调用无参数的构造器
<!-- 默认无参的构造器 --> <bean id="user1" class="com.bie.po.User"></bean>
2:调用有参数构造器
<!-- 带参的构造器 ,基本数据类型直接写如int,引用数据类型写全名如java.lang.String--> <bean id="user" class="com.bie.po.User"> <constructor-arg value="100" index="0" type="int"></constructor-arg> <constructor-arg value="张三" index="1" type="java.lang.String"></constructor-arg> </bean>
在Spring中通过配置文件使用ref元素引用其他JavaBean的实例对象
<!-- 定义一个字符串,值是'张三';String str=new String("张三"); --> <bean id="str" class="java.lang.String"> <constructor-arg value="张三"></constructor-arg> </bean> <!-- 带参的构造器 ,基本数据类型直接写如int,引用数据类型写全名如java.lang.String--> <bean id="user" class="com.bie.po.User"> <constructor-arg value="100" index="0" type="int"></constructor-arg> <constructor-arg ref="str" index="1" type="java.lang.String"></constructor-arg> </bean>
完整的applicationContext.xml(bean.xml)配置文件如下所示:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:p="http://www.springframework.org/schema/p"
5 xmlns:context="http://www.springframework.org/schema/context"
6 xsi:schemaLocation="
7 http://www.springframework.org/schema/beans
8 http://www.springframework.org/schema/beans/spring-beans.xsd
9 http://www.springframework.org/schema/context
10 http://www.springframework.org/schema/context/spring-context.xsd">
11
12
13 <!-- IoC容器的配置,要创建的所有的对象都配置在这里 -->
14
15 <!-- 默认无参的构造器 -->
16 <bean id="user1" class="com.bie.po.User"></bean>
17
18 <!-- 定义一个字符串,值是'张三';String str=new String("张三"); -->
19 <bean id="str" class="java.lang.String">
20 <constructor-arg value="张三"></constructor-arg>
21 </bean>
22
23 <!-- 带参的构造器 ,基本数据类型直接写如int,引用数据类型写全名如java.lang.String-->
24 <bean id="user" class="com.bie.po.User">
25 <constructor-arg value="100" index="0" type="int"></constructor-arg>
26 <!-- <constructor-arg value="张三" index="1" type="java.lang.String"></constructor-arg>
27 -->
28 <constructor-arg ref="str" index="1" type="java.lang.String"></constructor-arg>
29
30 </bean>
31 </beans>
3:工厂类创建对象
3.1:工厂类,静态方法创建对象
<!-- 3:工厂类创建对象 工厂类,实例方法,必须先创建工厂 再创建user对象,用factory的实例方法 --> <bean id="factory" class="com.bie.po.ObjectFactory"></bean> <bean id="user3" factory-bean="factory" factory-method="getInstance"></bean>
3.2:工厂类,非静态方法创建对象
<!-- 4:工厂类,静态方法,静态方法不需要实例化对象, class指定的就是工厂类型 factory-method一定是工厂里面的静态方法 --> <bean id="user" class="com.bie.po.ObjectFactory" factory-method="getStaticInstance"></bean>
完整的applicationContext.xml(bean.xml)配置文件如下所示:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:p="http://www.springframework.org/schema/p"
5 xmlns:context="http://www.springframework.org/schema/context"
6 xsi:schemaLocation="
7 http://www.springframework.org/schema/beans
8 http://www.springframework.org/schema/beans/spring-beans.xsd
9 http://www.springframework.org/schema/context
10 http://www.springframework.org/schema/context/spring-context.xsd">
11
12
13 <!-- IoC容器的配置,要创建的所有的对象都配置在这里 -->
14
15 <!-- 默认无参的构造器 -->
16 <bean id="user1" class="com.bie.po.User"></bean>
17
18 <!-- 定义一个字符串,值是'张三';String str=new String("张三"); -->
19 <bean id="str" class="java.lang.String">
20 <constructor-arg value="张三"></constructor-arg>
21 </bean>
22
23 <!-- 带参的构造器 ,基本数据类型直接写如int,引用数据类型写全名如java.lang.String-->
24 <bean id="user2" class="com.bie.po.User">
25 <constructor-arg value="100" index="0" type="int"></constructor-arg>
26 <!-- <constructor-arg value="张三" index="1" type="java.lang.String"></constructor-arg>
27 -->
28 <constructor-arg ref="str" index="1" type="java.lang.String"></constructor-arg>
29 </bean>
30
31 <!-- 3:工厂类创建对象
32 工厂类,实例方法,必须先创建工厂
33 再创建user对象,用factory的实例方法
34 -->
35 <bean id="factory" class="com.bie.po.ObjectFactory"></bean>
36 <bean id="user3" factory-bean="factory" factory-method="getInstance"></bean>
37
38 <!-- 4:工厂类,静态方法,静态方法不需要实例化对象,所以直接引用工厂类的class和方法 -->
39 <bean id="user" class="com.bie.po.ObjectFactory" factory-method="getStaticInstance"></bean>
40 </beans>
掌握Spring核心IoC容器,由简到繁,faghting~~~