04-spring-控制反轉
使用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-控制反轉