SpringIOC容器,是spring核心内容。功能:创建对象,处理对象的依赖关系
IOC容器创建对象:
创建对象, 有几种方式:
1) 调用无参数构造器
2) 带参数构造器
3) 工厂创建对象
工厂类,静态方法创建对象
工厂类,非静态方法创建对象
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:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- ###############对象创建############### --><!-- 1. 默认无参数构造器 <bean id="user1" class="cn.itcast.b_create_obj.User"></bean>--><!-- 2. 带参数构造器 --><bean id="user2" class="cn.itcast.b_create_obj.User"><constructor-arg index="0" type="int" value="100"></constructor-arg><constructor-arg index="1" type="java.lang.String" value="Jack"></constructor-arg></bean><!-- 定义一个字符串,值是"Jack" ; String s = new String("jack")--><bean id="str" class="java.lang.String"><constructor-arg value="Jacks"></constructor-arg></bean><bean id="user3" class="cn.itcast.b_create_obj.User"><constructor-arg index="0" type="int" value="100"></constructor-arg><constructor-arg index="1" type="java.lang.String" ref="str"></constructor-arg></bean><!-- 工厂类创建对象 --><!-- # 工厂类,实例方法 --><!-- 先创建工厂 --><bean id="factory" class="cn.itcast.b_create_obj.ObjectFactory"></bean><!-- 在创建user对象,用factory方的实例方法 --><bean id="user4" factory-bean="factory" factory-method="getInstance"></bean><!-- # 工厂类: 静态方法 --><!-- class 指定的就是工厂类型factory-method 一定是工厂里面的“静态方法”--><bean id="user" class="cn.itcast.b_create_obj.ObjectFactory" factory-method="getStaticInstance"></bean></beans>
实体类User.java
public class User {private int id;private String name;public User() {super();System.out.println("------User对象创建【无参数构造器】------");}public User(int id, String name) {System.out.println("-----User对象创建【带参数构造器】--------");this.id = id;this.name = 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;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + "]";}public void init_user() {System.out.println("创建对象之后,初始化");}public void destroy_user() {System.out.println("IOC容器销毁,user对象回收!");}}
测试代码
// 创建IOC容器对象ApplicationContext ac = new ClassPathXmlApplicationContext("cn/itcast/b_create_obj/bean.xml");// 获取容器中的对象User user = (User) ac.getBean("user");System.out.println(user);
演示工厂创建对象的类
// 工厂,创建对象
public class ObjectFactory {// 实例方法创建对象public User getInstance() {return new User(100,"工厂:调用实例方法");}// 静态方法创建对象public static User getStaticInstance() {return new User(101,"工厂:调用静态方法");}
}