一、IOC基本介紹
IoC : Inversion of Control (控制反轉), 其本意就是將原本在程序中手動創建對象的控制權
,交給Spring來管理;
1、在沒有IoC之前,我們的操作是: 若調用者需要使用某個對象,其自身就得負責該對象及該對象所依賴對象的創建和組裝;
2、有IoC之後,調用者只管負責從Spring容器中獲取需要使用的對象,不關心對象的創建過程,也不關心該對象依賴對象的創建以及依賴關係的組裝; 也就是把創建對象的控制權反轉給了Spring框架。
二、IOC入門案例
Spring的IoC操作分爲:IoC配置文件方式和IoC的註解方式(常用)。這裏使用配置文件方式來做入門案例
使用Spring調用一個User對象具體步驟如下:
- 1、導包(IDEA自帶)
- 2、寫一個POJO類
- 3、寫配置文件(默認根目錄是src)
- 4、創建一個Spring IOC容器對象
- 5、從IOC中獲取一個Bean實例
- 6、使用該實例
1、創建一個實體類
//User.java
public class User {
public void add() {
System.out.println("User Add Method.");
}
@Override
public String toString() {
return "This is a user object.";
}
}
2、創建Spring的配置文件,進行Bean的配置
這裏爲了方便,將核心配置文件放在src目錄下,並命名爲 applicationContext.xml,內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<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.xsd">
<bean id="user" class="demo1.User"></bean>
</beans>
元素屬性說明:
- bean元素:使用該元素描述需要spring容器管理對象
- name屬性:給被管理的對象起個名字,獲得對象時getBean(“name值”)
- class屬性:被管理對象的完整類名
- id屬性:與name屬性一模一樣,名稱不可重複,不能使用特殊字符
注: Spring的核心配置文件名稱和位置不是固定的。但官方件建議將該核心配置文件放在src目錄下,且命名爲 applicationContext.xml。
3、編寫測試類進行測試,通過配置文件創建類對象
public class TestUser {
public static void main(String[] args) {
//創建一個Spring IOC容器對象
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//從IOC中獲取一個Bean實例 這裏需要轉換類型(返回默認都是object類型)
User u = (User)context.getBean("user");
//使用該實例
System.out.println(u);
//調用該實例內部的屬性或方法
u.add();
}
}
注:
-
BeanFactory: Spring最底層的接口, 只提供了IoC的功能, 負責創建、組裝、管理bean,所以一般不適用BeanFactory, 推薦使用ApplicationContext(應用上下文)
-
ApplicationContext : ApplicationContext接口繼承了BeanFactory, 還提供了AOP繼承、國際化處理、事件傳播、統一資源價值等功能; 可以查看該接口的繼承體系;