1. 程式人生 > >小編Spring是什麽、spring容器、IOC和DI

小編Spring是什麽、spring容器、IOC和DI

size 類名 gettime 南京 依賴關系 3.2 處理異常 vpd 集合類型

1.Spring
(1)Spring是什麽?
是一個輕量級的、用來簡化企業級應用開發的開發框架。

註:
a.簡化開發:
Spring對常用的api做了簡化,比如,使用Spring
jdbc來訪問數據庫,就不用再考慮如何獲取連接、關閉連接、處理異常等等。
b.解耦:
Spring容器(Spring框架的一個模塊)幫我們管理
對象(包括對象的創建及對象之間的依賴關系),
這樣一來,對象之間的耦合度會大大降低,提供高了
系統的維護性。
c.集成其它框架:
Spring可以將其它一些常用的框架集成進來,比如
可以將Quartz,MyBatis等集成進來。
(2)Spring容器
1)Spring容器是什麽?
Spring框架的一個核心模塊,用於管理對象。

註:
管理對象指的是,spring容器會用我們創建對象,
並且建立對象之間的依賴關系。
2)如何啟動Spring容器?
step1.導包。

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.8.RELEASE</version>
</dependency>
step2.添加配置文件(applicationContext.xml)。

將配置文件添加到main/resources下。

step3.啟動Spring容器。

ApplicationContext ac =
new ClassPathXmlApplicationContext(
"applicationContext.xml");
3)創建對象
a.方式一  使用無參構造器

step1. 給類添加無參構造器(缺省構造器)。
step2. 在配置文件當中,使用bean元素來進行配置。

step3. 啟動容器,調用容器提供的getBean方法。 //通過容器獲得對象 Apple ap1 = ac.getBean("ap1",Apple.class); b.方式二  使用靜態工廠方法 (了解)
c.方式三  使用實例工廠方法 (了解) 4)作用域 a.默認情況下,對於某個bean,容器只會創建一個實例。 b.如果要讓容器創建多個實例,需要設置bean的作用域。 5)生命周期 spring容器在創建好對象之後,會調用初始化方法, 在銷毀該對象之前,會調用銷毀方法。 6)延遲加載 a.默認情況下,容器啟動之後,會將所有作用域為singleton的bean實例化。 b.延遲加載指的是,通過設置lazy-init="true"告訴容器, 啟動之後不再創建其實例。 (3)IOC和DI 1)IOC是什麽? (Inversion Of Controll 控制反轉) 對象之間的依賴關系應該由容器來建立。 2)DI是什麽? (Dependency Injection 依賴註入) 容器通過調用set方法或者構造器來建立對象之間的依賴關系。 註: IOC是目標,DI是手段。 3)set方法註入 step1. 為類添加set方法。 step2. 在配置文件當中,使用property元素來配置set 方法註入。 step3. 啟動容器,調用getBean方法。 3)set方法註入 ![](http://i2.51cto.com/images/blog/201812/05/800e7fdae63e852396da98d0d7752eed.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 4)構造器註入 step1. 添加相應的帶參的構造器。 step2. 使用元素來配置構造器註入。 step3. 啟動容器,調用getBean方法。 4)自動裝配 (了解) a.什麽是自動裝配? 容器依據某些規則,自動查找符合要求的對象, 然後建立對象之間的依賴關系。 註: 容器仍然要調用set方法或者構造器。 b.如何自動裝配? 使用autowire屬性指定裝配的規則:   5)註入基本類型的值 6)註入集合類型的值 a.支持四種集合類型的值的註入,分別是List,Set,Properties,Map。 b.註入方式如下: 打獵 看書 編程 編程 洛陽 金陵 開封 tom 1234 7)引用的方式註入集合類型的值 打獵 看書 編程 北京 南京 東京 John 1234 8)讀取properties文件的內容 9)spring表達式 a.spring表達式的作用? 可以用來讀取其它bean的屬性 b.用法如下圖: ![](http://i2.51cto.com/images/blog/201812/05/23d87db1dd4a6b4ce775fa429262c531.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

小編Spring是什麽、spring容器、IOC和DI