天天看點

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

尚矽谷-Spring5架構2020最新版教程(idea版)

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

Spring架構概述

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

Spring5入門案例

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

2、打開idea工具,建立普通Java工程

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

3、導入Spring5相關jar包

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

IOC

1.IOC(概念和原理)

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

IOC容器本質指的就是工廠

反射:通過得到類的位元組碼檔案(.class),可以操作類中的所有内容

IOC達到的目的:

IOC進一步降低耦合,例如dao中的類路徑發生了變化,不需要在servic類和工廠類中修改,隻需要需改xml檔案中的類路徑屬相

IOC解耦類互相依賴的過程:解析xml配置檔案擷取類的路徑,利用反射從二進制(.class)檔案擷取類的資訊,再通過neInstance和強轉建立類對象

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

2.IOC(BeanFactory接口)

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

3.IOC操作Bean管理(概念)

IOC操作的的術語是Bean管理

依賴注入是Ioc的具體實作,屬相注入的時候不再需要自己去new而是有spring建立好,直接去存放bean的容器中擷取(依賴注入)

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

原始的java屬相注入方式:set方法注入和構造方法注入

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

IOC操作Bean管理(基于xml方式)

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

IOC操作Bean管理(FactoryBean)

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

4.IOC操作Bean管理(bean作用域)

bean作用域的作用域是指:建立bean執行個體是單執行個體還是多執行個體

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

添加後置處理器後bean的生命周期會在初始化前後多兩步

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

IOC 操作 Bean 管理(xml 自動裝配)

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

IOC 操作 Bean 管理(基于注解方式)

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

建立對象注解

Spring 針對 Bean 管理中建立對象提供注解

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

5.基于注解方式實作屬性注入

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

@Autowired 根據屬性類型進行自動裝配

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

@Qualifier:根據名稱進行注入

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

@Resource:可以根據類型注入,可以根據名稱注入

@Resource是java提供的,所有spring 更推薦使用@Autowired [email protected]

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

@Value:注入普通類型屬性

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

6.完全注解開發

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

但是實際開發都是通過Springboot實作完全注解開發

AOP

AOP: 實作了在不改變類中原有代碼的基礎上,來增強類中的方法邏輯

AOP(概念)

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

AOP(底層原理)

AOP 底層使用動态代理實作。

代理: 為需要被增強類對象生産一個代理對象,通過這個代理對象添加需要曾加的功能。

AOP 底層使用動态代理

有兩種情況動态代理:

  • 第一種 有接口情況,使用 JDK 動态代理
  • 第二種 沒有接口情況,使用 CGLIB 動态代理

有接口情況,使用 JDK 動态代理
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

沒有接口情況,使用 CGLIB 動态代理

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

AOP(JDK 動态代理)

Spring已經幫我實作動态代理的實作,我們隻需通過配置或注解及可以直接使用。我們這裡主要學習一下JDK 動态代理實作方式

1、使用 JDK 動态代理,使用 Proxy 類裡面的方法建立代理對象

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

AOP中操作的術語(專業名詞)

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

AOP 操作(準備工作)

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

AOP 切入點表達式

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

AOP 操作(AspectJ 注解)

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

配置不同類型的通知

SpringBoot2.x.x 對應的是Spring5

Spring5 AOP的執行順序

程式執行正常順序

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

程式運作抛出異常:

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

相同的切入點抽取

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

有多個增強類多同一個方法進行增強,設定增強類優先級

使用@Order(1)設定增強類執行的先後順序 @Order(1)中的值越小優先級越高(0-1)

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

JdbcTemplate

1、什麼是 JdbcTemplate

(1)Spring 架構對 JDBC 進行封裝,使用 JdbcTemplate 友善實作對資料庫操作

Spring5 架構新功能

1、整個 Spring5 架構的代碼基于 Java8,運作時相容 JDK9,許多不建議使用的類和方法在代碼庫中删除

Spring 5.0 架構自帶了通用的日志封裝

Spring 5.0 架構自帶了通用的日志封裝但也可以這個和其他日志架構如Log4j2

Spring 5.0不在支援整合Log4j。

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

第二步 建立 log4j2.xml 配置檔案

<?xml version="1.0" encoding="UTF-8"?>
<!--日志級别以及優先級排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > 
ALL -->
<!--Configuration 後面的 status 用于設定 log4j2 自身内部的資訊輸出,可以不設定,
當設定成 trace 時,可以看到 log4j2 内部各種詳細輸出--> <configuration status="INFO">
 <!--先定義所有的 appender-->
	 <appenders>
 <!--輸出日志資訊到控制台-->
		 <console name="Console" target="SYSTEM_OUT">
 <!--控制日志輸出的格式-->
			 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-
5level %logger{36} - %msg%n"/>
		 </console>
	 </appenders>
 <!--然後定義 logger,隻有定義 logger 并引入的 appender,appender 才會生效-->
 <!--root:用于指定項目的根日志,如果沒有單獨指定 Logger,則會使用 root 作為
預設的日志輸出-->
 <loggers>
	 <root level="info">
		 <appender-ref ref="Console"/>
	 </root>
 </loggers>
</configuration>
           

Spring5 架構核心容器支援@Nullable 注解

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

Spring5 支援整合 JUnit5

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結

總結

Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結
Sping5 尚矽谷 2020Spring架構概述IOCAOPAOP中操作的術語(專業名詞)JdbcTemplateSpring5 架構新功能總結