2020-09-01 spring ioc累魔、aop

2020-09-01

今日計(jì)劃:看完代碼規(guī)劃走诞,糾結(jié)一下要不要買國行健身環(huán)副女!不買國行,買日版哈哈哈哈哈哈哈哈哈哈哈哈我買好了

2020-09-02

今日計(jì)劃:

  • 去營業(yè)廳問社彼俟#卡的事情 下午去問
  • 注冊任天堂賬號肮塞,倆。 等游戲機(jī)到了再注冊
  • 再了解一下aop ioc

IOC容器

控制反轉(zhuǎn)姻锁,減低耦合
ioc底層就是對象工廠

1枕赵、xml配置文件,配置創(chuàng)建的對象
image.png

image.png
  • spring提供ioc容器實(shí)現(xiàn)的兩種方式
    • BeanFactory(一般不提供開發(fā)人員使用):加載配置文件時(shí)位隶,不創(chuàng)建對象。在獲取/使用對象時(shí),才創(chuàng)建對象忱屑。
    • ApplcationContext(BeanFactory的子接口母债,更強(qiáng)大,一般由開發(fā)人員使用):在加載配置文件時(shí)笋妥,就會在配置文件中就創(chuàng)建對象懊昨。
  • ApplicationContext接口有實(shí)現(xiàn)類
IOC操作bean管理
  • bean管理指:1)創(chuàng)建對象 2)注入屬性

  • bean管理操作2種:
    1)基于xml配置文件方式實(shí)現(xiàn)

    image.png

    • image.png
  • DI:注入屬性
    1)set方法注入
    在spring配置文件配置對象創(chuàng)建,配置屬性注入


    image.png

2)有參構(gòu)造注入


image.png

image.png

2020-09-03

繼續(xù)學(xué)習(xí)spring 打好基礎(chǔ) 沖按盒=桶洹!

- 字面量(就是屬性的賦值)
  • null值
    image.png
  • 屬性值中包含特殊符號 (eg.value里面有<<>>)
    image.png
2月帝、注入屬性-外部bean

service調(diào)用dao躏惋,就是引用外部bean
在配置文件中操作: 在service中注入dao


image.png
3、注入屬性-內(nèi)部bean和級聯(lián)賦值

(與數(shù)據(jù)庫一對多嚷辅,多對多有關(guān)系)

  • 一對多關(guān)系簿姨,部門和員工
    在實(shí)體類中表示一對多的關(guān)系:

    先創(chuàng)建兩個(gè)類
    image.png

    用對象的屬性類型進(jìn)行表示

    再在spring配置文件中進(jìn)行配置:內(nèi)部bean
    image.png
4、注入屬性-級聯(lián)賦值

修改配置文件
外部bean:ref是引入根據(jù)bean的id引入property'


image.png

第二種寫法

1簸搞、注入數(shù)組扁位、list集合、map集合類型屬性


類的編寫
  • 寫配置文件 bean的配置
    • 集合類型:1趁俊、對象創(chuàng)建2贤牛、屬性注入


      數(shù)組

      list

      map

      set
      • 如果注入的list,里面值是對象


        先創(chuàng)建多個(gè)對象

        5则酝、把集合注入部分提取出來

    • 引入名稱空間util
      image.png
    • 使用util標(biāo)簽完成list集合注入提取
      image.png
IOC操作Bean管理(FactoryBean)
  • bean有2種:普通bean(在配置文件中的定義類型和調(diào)用時(shí)的返回類型是一樣的)和工廠bean(定義類型和返回類型可以不一樣)
    • 工廠bean:創(chuàng)建類殉簸,實(shí)現(xiàn)接口factorybean,實(shí)現(xiàn)接口的方法沽讹,可以用泛型般卑,在實(shí)現(xiàn)的方法中定義返回的bean類型
      image.png
      配置和調(diào)用
IOC操作Bean管理(bean的作用域)
  • 在spring中,設(shè)置bean是單實(shí)例還是多實(shí)例爽雄。默認(rèn)是單實(shí)例蝠检。
    • 單實(shí)例對象,地址相同
      image.png
      image.png
    • 設(shè)置單實(shí)例還是多實(shí)例:bean標(biāo)簽中有設(shè)置的屬性scope挚瘟,單實(shí)例(singleton)叹谁,多實(shí)例(Protype)饲梭。
      image.png
      • 設(shè)置singleton的時(shí)候,spring配置文件的時(shí)候就會創(chuàng)建單實(shí)例對象焰檩;設(shè)置protype憔涉,不是在spring加載配置文件的時(shí)候創(chuàng)建的,是在調(diào)用getbean方法的時(shí)候創(chuàng)建的多實(shí)例對象析苫。
IOC操作Bean管理(bean生命周期)

生命周期:對象從創(chuàng)建到銷毀的過程兜叨。

  • 1通過構(gòu)造器創(chuàng)建對象(無參構(gòu)造)
    image.png
  • 2為bean的屬性設(shè)置值和其他bean的引用(調(diào)用set方法)

  • 3把bean的實(shí)例傳給bean后置處理器的方法

  • 4調(diào)用bean的初始化方法(要配置)
    寫了一個(gè)方法
    配置
  • 5把bean的實(shí)例傳給bean后置處理器的方法


    先寫個(gè)類
    會給所有bean添加這個(gè)后置處理器
  • 6bean可以使用了(對象獲取到了)
    image.png
  • 7當(dāng)容器關(guān)閉時(shí),調(diào)用bean的銷毀方法(要配置衩侥,要手動銷毀)
    image.png
    image.png
    手動銷毀国旷,close方法

    4、bean的后置處理器茫死,bean的生命周期有7步

IOC操作Bean管理(xml自動裝配)用的很少跪但,一般用注解
  • 根據(jù)指定裝配規(guī)則(屬性名稱或者屬性類型),spring自動將匹配的屬性進(jìn)行注入
    自動裝配 bean的屬性autowire 常用值:byname屬性名稱峦萎,bytype屬性類型


    根據(jù)屬性名稱自動裝配

    根據(jù)類型
IOC操作Bean管理(外部屬性文件)

先引入jar包

  • 直接配置連接池
    寫死的
  • 引入外部屬性文件配置數(shù)據(jù)庫連接池


    image.png

    引入配置文件中特漩,名稱空間


    context

    在spring配置文件中引入
    用表達(dá)式

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

  • 結(jié)構(gòu):@注解名稱(屬性名稱=屬性值,屬性名稱=屬性值)
  • 目的:簡化xml配置
  • Spring提供的注解:
    • @Component
    • @Service
    • @Controller
    • @Repository
  • 創(chuàng)建對象
    1骨杂、引入aop依賴jar包

    2涂身、開啟組件掃描
    image.png

    3、在類上面
    4個(gè)注解都可以搓蚪,value可以省略蛤售,類的名稱首字母小寫

    掃描包,找到注解妒潭,創(chuàng)建對象

    4悴能、細(xì)節(jié)配置,
    只掃描controller

    不掃描controller

基于注解雳灾,屬性的注入

  • @AutoWired:根據(jù)屬性類型進(jìn)行自動裝配

    • 1漠酿、service和dao對象創(chuàng)建
      image.png

      、serviec類上加@service

    • 2谎亩、service里注入dao
      用@AutoWired
  • @Qualifier:根據(jù)屬性名稱進(jìn)行注入
    image.png
    • image.png
  • @Resource:根據(jù)類型或?qū)傩悦Q注入炒嘲,resource是javax擴(kuò)展包里的,不是spring里的


    根據(jù)類型

    名字

    根據(jù)名稱注入
  • @Value:普通類型屬性注入(比如string)


    image.png

純注解開發(fā)

  • 創(chuàng)建配置類匈庭,在類上加上@Configuration,@ComponentSca

    n(basepackage={包的路徑})
    image.png
  • 編寫測試類
    用annotationconfigapplicationcotext

AOP

  • aop底層使用動態(tài)代理夫凸。
    • 有接口情況 用 jdk動態(tài)代理實(shí)現(xiàn):創(chuàng)建接口實(shí)現(xiàn)類的代理對象,實(shí)現(xiàn)增強(qiáng)方法阱持。


      image.png
    • 沒有接口情況 CGLIB動態(tài)代理
      創(chuàng)建當(dāng)前類的子類的代理對象 來增強(qiáng)方法


      image.png

AOP(JDK代理)底層原理: 使用proxy類:返回指定接口的代理類的實(shí)例 調(diào)用newProxyInstance方法

步驟:

1夭拌、
有個(gè)接口

2、
有個(gè)實(shí)現(xiàn)類

3、
有個(gè)代理對象

4鸽扁、
寫具體增強(qiáng)實(shí)現(xiàn)類

5蒜绽、
通過有參構(gòu)造,把實(shí)現(xiàn)類的實(shí)例傳進(jìn)代理類來

6桶现、
在invoke方法中實(shí)現(xiàn)增強(qiáng)邏輯

7躲雅、
在代理類中傳參

AOP術(shù)語

  • 連接點(diǎn)


    image.png
  • 切入點(diǎn)


    image.png
  • 通知(增強(qiáng))


    image.png
    image.png
  • 切面


    image.png

AOP操作(準(zhǔn)備)

  • 基于AspectJ(一個(gè)獨(dú)立的框架)實(shí)現(xiàn)AOP操作:使用基于注解方式實(shí)現(xiàn)
  • 引入aop、aspectj相關(guān)依賴


    image.png
  • 切入點(diǎn)(實(shí)際要增強(qiáng)的方法)表達(dá)式:知道要對哪個(gè)類的哪個(gè)方法進(jìn)行增強(qiáng)
    • image.png

      image.png

AOP操作(AspectJ注解方式)

1巩那、創(chuàng)建類
image.png

2吏夯、創(chuàng)建增強(qiáng)類此蜈,編寫增強(qiáng)邏輯(用不同方法實(shí)現(xiàn)5種通知)


image.png

3即横、進(jìn)行通知的配置:

  • 在spring配置文件中,開啟注解掃描裆赵。
    image.png
  • 使用注解創(chuàng)建User和UserProxy對象东囚。

    在兩個(gè)類上加注解@Component
    image.png
  • 在增強(qiáng)類上添加注解@Aspect.
    image.png
  • 在spring配置文件中開啟生成代理對象。


    image.png

    4战授、 配置不同類型的通知:在增強(qiáng)類中页藻,在作為通知方法上面添加通知類型注解,使用切入點(diǎn)表達(dá)式配置


    before注解植兰,前置通知

    5份帐、相同切入點(diǎn)抽取
    image.png

    6、多個(gè)增強(qiáng)類楣导,設(shè)置優(yōu)先級

  • 在增強(qiáng)類的上面添加注解@Order(1)//(數(shù)字越小废境,優(yōu)先級越高)

AOP操作(AspectJ配置文件)

建一個(gè)book類


再建一個(gè)增強(qiáng)類

配置文件中創(chuàng)建對象

image.png

完全注解開發(fā)

  • 配置類加@Configuration和@ComponentScan(basePackages={"xxx.xx"})和@EnableAspectAutoProxy(proxyTargetClass=true)


    image.png

JdbcTemplate:方便對數(shù)據(jù)庫的增刪改查

  • 引入相關(guān)jar包
  • 在spring配置文件中配置數(shù)據(jù)庫連接池
    image.png
  • 創(chuàng)建jdbctem對象,注入datasource
  • image.png

    image.png

    image.png

事務(wù)ACID

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末筒繁,一起剝皮案震驚了整個(gè)濱河市噩凹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌毡咏,老刑警劉巖驮宴,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異呕缭,居然都是意外死亡堵泽,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門恢总,熙熙樓的掌柜王于貴愁眉苦臉地迎上來落恼,“玉大人,你說我怎么就攤上這事离熏〖亚” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵滋戳,是天一觀的道長钻蔑。 經(jīng)常有香客問我啥刻,道長,這世上最難降的妖魔是什么咪笑? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任可帽,我火速辦了婚禮,結(jié)果婚禮上窗怒,老公的妹妹穿的比我還像新娘映跟。我一直安慰自己,他們只是感情好扬虚,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布努隙。 她就那樣靜靜地躺著,像睡著了一般辜昵。 火紅的嫁衣襯著肌膚如雪荸镊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天堪置,我揣著相機(jī)與錄音躬存,去河邊找鬼。 笑死舀锨,一個(gè)胖子當(dāng)著我的面吹牛岭洲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播坎匿,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼盾剩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了碑诉?” 一聲冷哼從身側(cè)響起彪腔,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎进栽,沒想到半個(gè)月后德挣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡快毛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年格嗅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唠帝。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡屯掖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出襟衰,到底是詐尸還是另有隱情贴铜,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站绍坝,受9級特大地震影響徘意,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜轩褐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一椎咧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧把介,春花似錦勤讽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至秒拔,卻和暖如春莫矗,著一層夾襖步出監(jiān)牢的瞬間飒硅,已是汗流浹背砂缩。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留三娩,地道東北人庵芭。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像雀监,于是被迫代替她去往敵國和親双吆。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容