1. 程式人生 > >04-spring-控制反轉

04-spring-控制反轉

上下文 path pre new blog 可能 img 工作 接口

使用myeclipse開發spring一個Demo。

第一步:新建一個web project。

技術分享圖片

第二步:安裝spring開發的支持包。

技術分享圖片

安裝後多了這幾個東西

技術分享圖片

3,定義一個操作接口:

package com.Spring.Demo;

public interface IFruit {
    
    public void eat();

}

4,定義接口操作子類。

 package com.Spring.Demo;

public class Apple implements IFruit {

    @Override
    public void eat() {

        System.out.println(
"吃蘋果"); } }

隨後不提供有工廠的操作類,因為spring本身就有工廠類。在之後的工作就不應該出現工廠類。

5,修改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"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd"> <bean id="apple" class="com.Spring.Demo.Apple"></bean> </beans>

6,隨後通過特定模式啟動spring容器。

找到子類操作接口。

package com.Spring.Demo;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestApple { public static void main(String[] args) { ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); IFruit fruit=ctx.getBean("apple",Apple.class); fruit.eat(); } }

整個代碼操作過程中無法發現工廠設計模式的明確使用,因為所有的工廠都由spring幫助用戶處理了。而且在

applicationContext.XML配置文件裏,都在spring容器啟動時候默認實例化好了所有的對象。

使用的時候,根據ID名稱取出即可。

使用過程中的類:

1,應用上下文類:ApplicationContext

所有配置的信息都需要通過此類讀取。

常用方法:getBean(String name,Class<T> requireType)。取得指定名稱的bean對象,並且設置泛型為指定操作的bean類型,避免向下轉型

2,由於資源控制文件可能在任意位置上,例如CLASSPATH或者磁盤中,那麽必須使用相關子類:

ClassPathXmlApplicationContext("ClassPath");表示在CLASSPATH中讀取資源文件。

所有spring配置的<bean>元素都表示在spring容器啟動的時候自動初始化,所以在使用對象之前已經準備好了供用戶使用的實例,

用戶在使用的時候,只需要通過bean的ID,獲取對象實例,賦值給對象聲明

如果有更嚴格的配置也可以把接口配置上去(不過沒啥用)

    <bean id="fruit" class="com.Spring.Demo.IFruit" abstract="true"></bean>
    <bean id="apple" class="com.Spring.Demo.Apple" parent="fruit"></bean>

由於接口是抽象的,那麽表示接口對象不會進行實例化。而在編寫apple元素的時候加上的parent 也只是說明而已。

總結

spring是一個非常龐大的工廠,所有對象的實例化等賦值部分,不需要用戶賦值處理了,全部交給spring完成。

用戶只需要根據需求引用對象實例即可。

04-spring-控制反轉