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,"工廠:調用靜態方法");}
}