2020.6.19 17:11
Spring介紹
Spring是一個一站式的框架,僅僅使用一個Spring框架就能完成項目的開發。
原因:Spring框架性質是屬於容器性質的。容器中裝什麼對象就有什麼功能,所以可以一站式開發。
三層架構中Spring的位置:
Spring的核心:IOC【控制反轉】和 AOP【面向切面編程】
Spring中有:AOP支持、IOC思想、Spring JDBC、AOP事務、JUnit測試支持。
Spring搭建
新建一個動態Web項目。
- 導包。主要有Beans、Core、Context、SpEL
在lib中導入如下jar包。
- 創建一個對象,例如:User。
新建一個User類。
- 書寫xml配置,註冊對象到容器中。
- 導入外部的dtd文件。如:spring-beans-4.2.xsd。
-
在Window–Preferences中,搜索catalog找到xml中的XML Catalog,然後新建Add
-
將spring-beans-4.2.xsd放在key後面,在key type中選擇Schema location。OK即可。
-
導入約束。先在xml文件中寫一個
<beans></beans>
。然後切換到Design設計模式。如下圖示。右鍵彈出。
最後結果如下圖所示:
- 代碼測試。 在src下新建一個專門用於測試的包,並在下面新建一個測試類TestDemo。實際操作代碼如下。
Spring中的IOC和AOP概念
- IOC思想:【反轉控制】----反轉了對象的創建方式,從我們自己創建反轉給了程序Spring。【將對象的創建權力交給了Spring】。以前對象是由我們開發人員來自己維護,包括依賴都是自己注入。使用了Spring之後,對象的創建和依賴關係都可由Spring來完成創建和注入。
- DI:(Dependeney Injection)依賴注入。
- 注入方式有:
1、Set方法注入
2、構造方法注入
3、字段注入 - 注入類型有:
1、 值類型注入
2、 引用類型注入
- BeanFactory 和 ApplicationContext:
-
BeanFactory:已過時的接口,Spring最原始的接口。針對原始接口的實現類,功能單一。
特點:每次在獲得對象時,纔會去創建對象。 -
ApplicationContext:每次容器啓動時,就會去創建容器中配置的所有對象。提供很多的功能。
1、從類路徑下加載配置文件:ClassPathXmlApplicationContext
2、從硬盤中絕對路徑下加載配置:FileSystemXmlApplication(“D://xxx//…”);
Spring中Bean的配置詳解
在applicationContext.xml 裏:
Bean元素:使用該元素描述需要Spring容器管理的對象。
- name屬性。【給被管理的對象起個名字,獲得對象時根據該名獲得對象,可重複,可用特殊字符】
- class屬性。【被管理對象的完整類名】
- id屬性。【與name一樣,名稱不可重複,不能使用特殊字符】
- 結論:儘量使用name屬性。
<bean id="User" name="可用/User或Use-r等" class="com.HoQis.beans.User"></bean>
三種創建對象的方式:
- 空參構造方法。【重點掌握】
<bean name="user1" class="com.HoQis.beans.User"></bean>
- 靜態工廠。【瞭解】
<bean name="user2" class="com.HoQis.beanFactory.UserFactory" factory-method="createUser"></bean>
-
實例工廠。【瞭解】
Spring配置中的Scope屬性1、singleton (默認值)單例對象:被表示爲單例的實例對象,在Spring容器中只會存在一個。
<bean name="user1" class="com.HoQis.beans.User" scope="singleton"></bean>
2、prototype 多例原型。被標識爲多例的實例對象,在Spring容器中,每次在獲得纔會創建,並且每一次都是創建新對象。
<bean name="user1" class="com.HoQis.beans.User" scope="prototype"></bean>
還有這兩個屬性,分別爲:session和request,不常用。
導入其他Spring的配置文件
<import resource="xxx.xml(文件路徑)">
Spring屬性注入方式:
- Set方法注入【特別重要】
- 構造方法注入【較重要】
- p名稱注入
- spEL注入
需在User和Car類中添加toString()方法
<!-- Set方法注入 -->
<bean name="User" class="com.HoQis.beans.User">
<property name="name" value="Tom"></property><!-- 值注入,爲User對象中的name屬性注入值爲Tom -->
<property name="age" value="18"></property><!-- 值注入,爲User對象中的age屬性注入值爲18-->
<property name="car" ref="car"></property><!-- ref引用類型注入,爲car屬性注入下方配置的Car對象 -->
</bean>
<bean name="car" class="com.HoQis.beans.Car">
<property name="car" value="法拉利"></property>
<property name="color" value="黃色"></property>
</bean>
總結:
2020.6.20 0:05