Spring之IOC入門

一、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繼承、國際化處理、事件傳播、統一資源價值等功能; 可以查看該接口的繼承體系;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章