1. 程式人生 > 其它 >最簡潔學完Spring框架

最簡潔學完Spring框架

Spring框架

- 怎麼學框架

  1. 知道框架能做什麼

  2. 框架的語法

  3. 會用後 以後在考慮內部實現

  4. 通過以上步驟 可以自己實現一個框架

一、概述

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.優點

  • 檔案小 效率高

  • 避免多人使用衝突

  1. 按功能模組

  1. 按類的功能

2.使用

//建立一個Srping主配置檔案total.xml
//裡面包含其他配置檔案spring-*.xml
//一般不定義物件
<import resoutce = "classpath:路徑.xml">

//可以使用萬用字元*
//不能包含total.xml
//需要在目錄下才能使用
<import resoutce = "classpath:spring-*.xml">