最簡潔學完Spring框架
阿新 • • 發佈:2021-09-04
- 怎麼學框架
-
知道框架能做什麼
-
框架的語法
-
會用後 以後在考慮內部實現
-
通過以上步驟 可以自己實現一個框架
一、概述
1. 框架是什麼
-
Spring 是一個容器 管理物件,屬性賦值,底層使用反射機制
-
主要是解決企業開發難度
-
模組之間,類之間的管理解耦合 解決物件之間的關係
-
核心技術 ioc aop
2. 優點
-
輕量
-
針對介面程式設計 解耦合
-
支援AOP 面向切面程式設計
-
方便整合其他框架 像插座
3. Spring體系結構
資料訪問 Web AOP 整合 容器 測試
二、 IOC控制反轉
1. 為什麼使用IOC:
目的減少程式碼的改動,也能實現不同功能 解耦合
2. IOC(控制反轉)是一個思想。
-
控制:物件的建立,賦值,物件關係之間的管理
-
反轉:把開發人員new物件的權利 轉移給容器實現
-
正轉:開發人員使用程式碼中 new物件
-
容器:是一個伺服器軟體,一個框架(Spring)
3. IOC的技術實現:
DI實現IOC的功能
DI:依賴注入 只需提供物件的名稱 物件建立、賦值等 由容器內部實現
三、 入門案例
1. 加入依賴
<!--//Spring依賴-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
2.建立類(介面和實現類)
service包下建立介面 imp包下實現類
3. 建立Spring配置檔案
<!--在資源目錄下 要建立Spring的xml-->
<?xml version="1.0" encoding="UTF-8"?>
<!--beans:根標籤 spring把java物件成bean-->
<!--spring-beans.xsd:格式約束檔案-->
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 宣告bean 告訴spring建立物件
id:自定義名 spring通過這個名找到物件
class:全限定名稱(不能是介面 必須類)-->
<bean id="some" class="com.baidu.service.imp.SomeServiceImp"/>
</beans>
4. 測試使用物件
//ApplicationContext:是Spring的容器 通過容器獲取物件
//ClassPathXmlApplicationContext:類路徑載入Spring配置檔案
ApplicationContext app =
new ClassPathXmlApplicationContext("beans.xml");
//getBean方法:獲取
xxxx xx =
(xxxx)app.getBean("配置檔案中的bean的id");
5. 注意點:
spirng: 建立物件的時間:建立spring的容器時,建立beans的所有物件
spring: 預設呼叫無參構造
獲取容器中物件的資訊api:
getBeanDefinitionCount(): 獲取定義的物件數量
getBeanDefinitionNames():獲取所有定義物件的名稱
四、 DI實現語法
1. 通過spring完成 屬性賦值
基本型別和String在這屬於簡單型別
引用
1.1 基於XML的DI實現
spring 配置檔案中,使用標籤和屬性
set注入
spring 呼叫類的set方法 必須有
//在spring配置檔案bean中為屬性賦值
//實際呼叫set方法
<property name="屬性名" value="值 都要加引號"/>
//引用型別
<property name="屬性名" ref="time"/>
<bean id="time" class="java.util.Date"/>
構造注入
呼叫類的有參構造方法
<constructor-arg
name="構造方法的新參名"
index="從0開始 構造方法引數位置"
ref="引用"
value="簡單型別值"/>
//還有個省略index 但是要按方法引數位置
1.2 基於註解的DI實現
spring 配置檔案中,使用spring的註解
1.3 引用型別自動注入
byName(按名注入):
//類的屬性名和spring配置檔案bean id名一致 型別一致
<bean id=""class="" autowire="byName">
//簡單型別賦值 引用自動
</bean>
byType(按型別注入):
//spring配置檔案bean class型別一致或父子介面類關係
//唯一bean
<bean id=""class="" autowire="byType">
//簡單型別賦值 引用自動
</bean>
1.4 多個配置
1.優點
-
檔案小 效率高
-
避免多人使用衝突
-
按類的功能
2.使用
//建立一個Srping主配置檔案total.xml
//裡面包含其他配置檔案spring-*.xml
//一般不定義物件
<import resoutce = "classpath:路徑.xml">
//可以使用萬用字元*
//不能包含total.xml
//需要在目錄下才能使用
<import resoutce = "classpath:spring-*.xml">