1)SpringIOC容器是Spring的核心内容.作用:创建对象及处理对象的依赖关系.
2)IOC容器创建对象的方式:
a)调用无参数构造器
b)带参数构造器
c)工厂创建对象:工厂类静态方法创建对象;工厂类非静态方法创建对象.
1)User实体类
package com.bighuan.b_create_obj; public class User { public User(){ System.out.println("------创建user对象[无参构造器]----"); } public User(int id, String name) { System.out.println("------创建user对象[有参构造器]----"); this.id = id; this.name = name; } private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void init_user(){ System.out.println("在创建user对象后初始化"); } public void destroy_user(){ System.out.println("IOC容器销毁,user对象回收"); } @Override public String toString() { return "User [id=" + id + ", name=" + name + "]"; } } 2)工厂类 package com.bighuan.b_create_obj; public class ObjectFactory { public User getInstance(){ return new User(112,"工厂:通过实例方法"); } public static User getStaticInstance(){ return new User(113,"工厂:通过静态方法"); } } 3)配置 <?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- IOC容器的配置:要创建的所有对象都在这里配置 --> <!-- ******对象创建********* --> <!-- 默认无参数构造器 --> <bean id="user1" class="com.bighuan.b_create_obj.User"></bean> <!-- 有参构造器 --> <bean id="user2" class="com.bighuan.b_create_obj.User"> <!-- 基本类型直接写(如int),引用类型写全名(如:java.lang.String) --> <constructor-arg value="119" index="0" type="int"></constructor-arg> <constructor-arg value="Leslie" index="1" type="java.lang.String"></constructor-arg> </bean> <!-- 定义一个字符串 --> <bean id="str" class="java.lang.String"> <constructor-arg value="rose"></constructor-arg> </bean> <!-- 有参构造器 --> <bean id="user3" class="com.bighuan.b_create_obj.User"> <!-- 基本类型直接写(如int),引用类型写全名(如:java.lang.String) --> <constructor-arg value="119" index="0" type="int"></constructor-arg> <constructor-arg index="1" type="java.lang.String" ref="str"></constructor-arg> </bean> <!-- 3,通过工厂创建对象 --> <!-- 工厂类:实例方法 --> <bean id="factory" class="com.bighuan.b_create_obj.ObjectFactory"></bean> <bean id="user4" factory-bean="factory" factory-method="getInstance"></bean> <!-- 工厂类:静态方法 class:指定的就是工厂类 factory-method:指定的就是工厂的静态方法 --> <bean id="user5" class="com.bighuan.b_create_obj.ObjectFactory" factory-method="getStaticInstance"></bean> </beans>4)测试 package com.bighuan.b_create_obj; import org.junit.Test; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; public class App { @Test public void testIOC() throws Exception { //bean.xml在src目录下 //ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml"); //创建IOC容器对象 ApplicationContext ac = new ClassPathXmlApplicationContext( "com/bighuan/b_create_obj/bean.xml"); //获取容器中的对象 User user1=(User) ac.getBean("user1"); User user2=(User) ac.getBean("user2"); User user3=(User) ac.getBean("user3"); User user4=(User) ac.getBean("user4"); User user5=(User) ac.getBean("user5"); System.out.println(user1); System.out.println(user2); System.out.println(user3); System.out.println(user4); System.out.println(user5); } } 测试结果: ------创建user对象[无参构造器]---- ------创建user对象[有参构造器]---- ------创建user对象[有参构造器]---- ------创建user对象[有参构造器]---- ------创建user对象[有参构造器]---- User [id=0, name=null] User [id=119, name=Leslie] User [id=119, name=rose] User [id=112, name=工厂:通过实例方法] User [id=113, name=工厂:通过静态方法]