spring開發總結

Spring是一個開源框架,Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson創建。簡單來說,Spring是一個分層的JavaSE/EEfull-stack(一站式) 輕量級開源框架。

1.spring介紹

Spring是一個非常活躍的開源框架, 它是一個基於IOCAOP來構架多層JavaEE系統的框架,它的主要目地是簡化企業開發

Spring以一種非侵入式的方式來管理你的代碼, Spring提倡”最少侵入”,這也就意味着你可以適當的時候安裝或卸載Spring

Spring框架的主頁:http://www.springsource.org/ 

Spring框架下載地址:http://www.springsource.org/download 

2.spring模塊圖

wKiom1gRfYDyuYyyAAA-ZaDi_fk026.png

3.爲什麼要使用spring呢?

在項目中引入spring立即可以帶來下面的好處 

降低組件之間的耦合度,實現軟件各層之間的解耦。 

    

1. IOC(依賴注入):包含並管理應用對象的配置和生命週期,你可以配置你的每個bean如何被創建,也可以配置每個bean是隻有一個實例,還是每次需要時都生成一個新的實例,以及它們是如何相互關聯的 

2. AOP(面向切面):採用了面向切面編程來實現很多基礎但是與業務邏輯無關的功能的解耦,比如:事務管理、日誌、權限驗證.....

3. DAO:Spring 還提供了對數據庫JDBC的封裝,使用JdbcTemplate來簡化數據操作 

4. ORM:提供了對主流的對象關係映射框架的支持 

5. JEE: Java企業級開發提供了一些解決方案,例如EJBJMS 

6. WEB: 提供了自己的Spring MVC和對顯示層框架的集合支持 

4.控制反轉IOC

IOC就是 Inversion Of Control 

public class Girl {

     private Boy boy =new Boy();

     public void kiss() {

          System.out.println(boy.getName());

    }

}

boy是在應用內部創建及維護的。所謂控制反轉就是應用本身不負責依賴對象的創建及維護,依賴對象的創建及維護是由外部容器負責的。這樣控制權就由應用轉移到了外部容器,控制權的轉移就是所謂反轉,目的是爲了獲得更好的擴展性和良好的可維護性。

5.依賴注入DI

  DI就是 Dependency Injection

   當我們把依賴對象交給外部容器負責創建,那麼Girl類可以改成如下: 

public class Girl {

     private Boy boy;

     public void kiss() {

          System.out.println(boy.getName());

    }

}

所謂依賴注入就是指:在運行期,由外部容器動態地將依賴對象注入到另一個對象中。 

6.實例化spring容器

實例化Spring容器常用的兩種方式: 

方法一:

在類路徑下尋找配置文件來實例化容器 

ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});

可以在整個類路徑中尋找xml文件

     * 通過這種方式加載。需要將spring的配置文件放到當前項目的classpath路徑下

     *  classpath路徑指的是當前項目的src目錄,該目錄是java源文件的存放位置。 

方法二:

在文件系統路徑下尋找配置文件來實例化容器 

ApplicationContext ctx = new FileSystemXmlApplicationContext(new String[]{“d:\\beans.xml“});

Spring的配置文件可以指定多個,可以通過String數組傳入。 

7.spring容器中得到bean

  spring容器啓動後,因爲spring容器可以管理bean對象的創建,銷燬等生命週期,所以我們只需從容器直接獲取Bean對象就行,而不用編寫一句代碼來創建bean對象。從容器獲取bean對象的代碼如下: 

 ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");

 

Girl girl =(Girl)ctx.getBean("girl");

8.三種實例化Bean的方式:

1.使用類構造器實例化(默認無參數)

wKioL1gRfcHQOB7lAAA2WughPjc668.png

wKioL1gRfcGB7O_XAAAaGHKofuk532.png

wKiom1gRfcHxWlpMAAAkSZo4U3U764.png

2.使用靜態工廠方法實例化 

wKiom1gRfe_Qb9GXAAAhJzH8InQ219.png

wKioL1gRfe-wIXAwAAAozDonzhU432.png

wKiom1gRfe_yqrPcAAAb_kfh3SU850.png



3.使用實例工廠方法實例化:

 

wKioL1gRfgXR8Mq1AAAhj5nw8zQ072.png

wKioL1gRfgWQpDKDAAApAtEI2Go576.png

wKiom1gRfgWzNilEAAA19lAAGNk617.png

9.指定Bean的初始化方法和銷燬方法

Spring初始化bean或銷燬bean時,有時需要作一些處理工作,因此spring可以在創建和銷燬bean的時候調用bean的兩個生命週期方法。

  <bean id=“foo” class=“...Foo”

            init-method=“setup”

            destory-method=“teardown”/>

10.Bean的作用域

.singleton(默認值)

 在每個Spring IoC容器中一個bean定義只有一個對象實例(共享)

  默認情況下會在容器啓動時初始化bean,但我們可以指定Bean節點的lazy-init=“true”來延遲初始化bean這時候,只有第一次獲取bean會才初始化bean。如:

 <bean id="xxx" class="cn.itcast.OrderServiceBean" lazy-init="true"/>

.prototype 

      允許bean可以被多次實例化(使用一次就創建一個實例)


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