spring

spring簡(jiǎn)介

spring是J2EE應(yīng)用程序框架,是輕量級(jí)的IoC和AOP的容器框架,主要是針對(duì)javaBean的生命周期進(jìn)行管理的輕量級(jí)容器,可以單獨(dú)使用,也可以和Struts框架,mybati框架等組合使用。

IOC與DI

ioc控制反轉(zhuǎn)。把對(duì)象的創(chuàng)建就給spring配置。DI依賴注入,向類里面的屬性設(shè)置值。依賴注入不能單獨(dú)存在,需要在ioc基礎(chǔ)上完成。

屬性注入的幾種方式:

(1)構(gòu)造函數(shù)注入

(2)set注入


(3)p名稱空間

對(duì)象的注入:

使用注解創(chuàng)建對(duì)象:

@Service,@Component,@Controller,@Repository

注解注入對(duì)象:

@Autowired?? @Resource

AOP

Aspect Oriented Programming 面向切面編程。解耦是程序員編碼開發(fā)過程中一直追求的。AOP也是為了解耦所誕生。

具體思想是:定義一個(gè)切面,在切面的縱向定義處理方法,處理完成之后,回到橫向業(yè)務(wù)流.

AOP 主要是利用動(dòng)態(tài)代理模式的技術(shù)來實(shí)現(xiàn)的
.

有接口的情況下使用jdk代理。沒有接口的情況使用 cglib動(dòng)態(tài)代理。

AOP操作術(shù)語

1? Joinpoint(連接點(diǎn)):在spring中這些連接點(diǎn)指的就是可以被增強(qiáng)的方法。

2.在類里面可以很多的方法增強(qiáng),比如在實(shí)際的操作中,只是增強(qiáng)了類里面的add方法和update方法,實(shí)際增強(qiáng)的方法稱為切入點(diǎn)。

前置通知:在方法執(zhí)行前通知。

后置通知:在方法執(zhí)行后通知。

異常通知:在方法出現(xiàn)異常

最終通知:后置之后執(zhí)行

環(huán)繞通知:在方法之前和方法之后通知。

3.Aspect(切面)把增強(qiáng)應(yīng)用到具體的方法上面,這個(gè)過程稱之為切面。

AOP 的實(shí)現(xiàn)原理

AOP分為靜態(tài)AOP和動(dòng)態(tài)AOP。靜態(tài)AOP是指AspectJ實(shí)現(xiàn)的AOP,他是將切面代碼直接編譯到Java類文件中。動(dòng)態(tài)AOP是指將切面代碼進(jìn)行動(dòng)態(tài)織入實(shí)現(xiàn)的AOP。Spring的AOP為動(dòng)態(tài)AOP,實(shí)現(xiàn)的技術(shù)為: JDK提供的動(dòng)態(tài)代理技術(shù) 和 CGLIB(動(dòng)態(tài)字節(jié)碼增強(qiáng)技術(shù)) 。盡管實(shí)現(xiàn)技術(shù)不一樣,但 都是基于代理模式 , 都是生成一個(gè)代理對(duì)象 。



使用注解操作AOP



SpringMVC

運(yùn)行原理圖:


1.用戶發(fā)起請(qǐng)求,dispatcherServlet獲取用戶訪問的路徑。

2.dispatcherServlet去找相應(yīng)的處理器。

3.dispatcherServlet調(diào)用處理器訪問controller.

4.controller調(diào)用service,返回modelAndView。

5.dispatcherServlet得到處理結(jié)果。

6.調(diào)用view解析器對(duì)model進(jìn)行解析

7.將解析后的model數(shù)據(jù)傳給view顯示

8.http響應(yīng)給瀏覽器。

<context:component-scan base-package=""/>掃描指定的包中的類上的注解,常用的注解有:



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是Spring Spring是一個(gè)開源的Java EE開發(fā)框架。Spring框架的核心功能可以應(yīng)用在任何Jav...
    jemmm閱讀 16,779評(píng)論 1 133
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,614評(píng)論 19 139
  • 本章內(nèi)容: 面向切面編程的基本原理 通過POJO創(chuàng)建切面 使用@AspectJ注解 為AspectJ切面注入依賴 ...
    謝隨安閱讀 3,425評(píng)論 0 9
  • 第7天·21天OH卡顏瘦身課 #玩卡不卡·每日一抽# 每一位都可以通過這張卡片覺察自己: 1、直覺他叫什么名字?秀...
    多加花園李瑩閱讀 239評(píng)論 0 0

友情鏈接更多精彩內(nèi)容