Spring學習筆記----01. 入門知識,IoC/DI


開始學習Spring,每次學習之后都會記一次筆記。

一、什么是Spring。

其實從小就討厭看定義,長話短說,Spring就是一個輕量級、非侵入式的框架。至於什么是非侵入式的,簡單說來就是框架的代碼不會侵入到開發者自己寫的代碼中,所有的框架代碼和開發者代碼是分離的,僅僅通過配置文件來關聯,解耦合。侵入式就是框架的代碼會摻和進開發者自己寫的代碼中,比如Struts就是侵入式的。

二、Spring的框架內容。

至於Spring能實現哪些功能,很多教程上都有詳細的長篇解說,這里就不重復叨叨了,不喜歡文字的定義。

簡單說說兩個常用內容,IoC/DI和AOP。

IoC:Inversion of Control,控制反轉。白話文舉例解釋,你寫了一個類A,要在類B中引用類A的對象,通常是在類B中直接實例化,由你控制這一切;IoC就是由Spring框架去實例化類A的對象,實例化的過程由框架控制,你甚至不需要new這個關鍵字來對類A做什么。

DI:Dependency Injection,依賴注入。IoC的機制注定很多類的實例化都在配置文件中配置,這就決定了需要通過這種特殊的機制才能把不同類之間的調用關系組合起來。由框架把需要的依賴關系注入到不同的業務邏輯中。

AOP:Aspect Oriented Programming,是面向切面編程,也有翻譯成面向方面編程。就是可以通過配置文件,把一些諸如日志、事務等類的操作,配置到某些操作之間,就好比數據庫中的觸發器一樣,在某些條件下觸發指定方法的執行。

三、實例操作IoC/DI

操作系統:Mac OS X 10.8.3

開發工具:MyEclipse 10.0

開發環境:JDK 6、Spring 3.0

1、新建Web Project,命名為SpringStudy。

2、在左側Project Explorer中右擊SpringStudy,選擇“MyEclipse”——“Add Spring Capabilities...”,默認選擇“Spring 3.0 Core Libraries”。

 

下一步,選擇applicationContext.xml文件的存儲路徑和文件名,該文件就是Spring的配置文件,所有的類的實例都可以在這個文件中以<bean>標簽的形式配置出來。

有些人比較喜歡把配置文件放到WebRoot/WEB-INF文件夾下面,這時在讀取applicationContext.xml時稍有不同,代碼請參照后面。

3、新建包com.ethan.api,在該包下新建類HelloApi.java接口,聲明一個方法helloPrint():

1 public interface HelloAPI { 2     
3     public void helloPrint(); 4 
5 }

新建包com.ethan.impl,在該包下新建類HelloImpl.java實現接口HelloApi:

1 public class HelloImpl implements HelloAPI { 2 
3  @Override 4     public void helloPrint() { 5         System.out.println("Hello Spring~"); 6  } 7 
8 }

打開applicationContext.xml文件,配置這個類:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans  3     xmlns="http://www.springframework.org/schema/beans"
 4  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5  xmlns:p="http://www.springframework.org/schema/p"
 6  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 7 
 8 <bean name="helloBean" class="com.ethan.impl.HelloImpl"></bean>
 9 
10 </beans>

新增的一行是:

<bean name="helloBean" class="com.ethan.impl.HelloImpl"></bean>

name相當於實例化對象的名字,class指定要實現的類。

此時便可以在其他類中通過讀取配置文件來調用這個HelloImpl類了。

4、新建包com.ethan.test,在該包中新建類Client,在main函數中讀取配置文件,並調用剛剛配置的bean:

 1 public class Client {  2 
 3     public static void main(String[] args) {  4         
 5         ApplicationContext context = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext.xml");  6         
 7         HelloAPI api = (HelloAPI)context.getBean("helloBean");  8         
 9  api.helloPrint(); 10 
11  } 12 
13 }

注意第5行,前面說過,如果把配置文件applicationContext.xml放到WEB-INF下面,就需要通過FileSystemXmlApplicationContext類指定相對路徑來讀取,如果僅僅是按照默認方式放到src下面,則可以通過如下方式讀取:

1 Application context = new ClassPathXmlApplicationContext("applicationContext.xml");

第7行,context.getBean("helloBean")中的"helloBean",就是上一步在applicationContext.xml中配置的bean的name。

最后完整的項目框架為:

 

運行Client.java文件,得到輸出內容:

 

So easy~媽媽再也不用擔心我的學習~~~

**以上內容純屬個人理解,定有不妥之處,還請大牛指正**

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM