SpringFrameWork學(xué)習(xí)筆記-創(chuàng)新互聯(lián)

HelloSpring
  • 對(duì)IOC方式的理解(就是抽離出一個(gè)創(chuàng)建對(duì)象的容器),以及property依賴set注入和無參構(gòu)造注入,有參構(gòu)造注入包括index、type和name三種方式,前兩種會(huì)造成混淆,建議使用變量名注入,可以結(jié)合使用;
  • 對(duì)于復(fù)雜屬性的注入:
  1. 單個(gè)對(duì)象在旁邊配置好bean后,ref其id即可;
  2. 數(shù)組應(yīng)用property雙閉合標(biāo)簽,子標(biāo)簽array+多個(gè)value即可解決;
  3. List類比Array,Map應(yīng)用Entry,Set沒什么可說的…
  4. String屬性value=""視為空字符串,嵌套視為null注入;
  5. 針對(duì)Properties對(duì)象存在Props標(biāo)簽,存在key屬性包夾value值,
    eg:value
  • 自動(dòng)裝配:配置bean屬性下的autowire為byName(通過id和set方法的名稱進(jìn)行反射裝配)或者byType(確保類型唯一),需要注意的是兩者只針對(duì)bean內(nèi)的單個(gè)對(duì)象屬性裝配有效,基本數(shù)據(jù)類型會(huì)為默認(rèn)值;
  • 注解自動(dòng)裝配@Autowired,可以配置在set方法或者對(duì)象屬性上,需要注意的是其默認(rèn)是根據(jù)bean配置智能選擇是byType還是byName,出現(xiàn)混淆情況時(shí)可追加@Qualifier(value=“qualifier”)進(jìn)行名稱區(qū)分,此時(shí)為具體地byName裝配;
  • 此外,JDK11之前,javax還默認(rèn)提供@Resource注解實(shí)現(xiàn)與@Autowired類似的裝配方式(只不過其內(nèi)部裝配方式的選是與@Autowired相反),同樣可在value參數(shù)下指定具體地bean的id進(jìn)行區(qū)分;
  • 以上裝配方式多適用于對(duì)象屬性;
注解開發(fā)
  1. @Component:標(biāo)注在類簽名之上,等價(jià)于單獨(dú)bean的配置;
  2. @Controller、@Repository和@Service等價(jià)于@Component,只不過在MVC架構(gòu)下可以細(xì)化bean的分類,明確層級(jí)間的分工;
  3. @Value(“value”)加注在set方法或者字段屬性上(可以沒有set方法),等價(jià)于property的注入;
  4. @Scope(“prototype”)標(biāo)注bean的作用域;
  5. 注意以上注解仍然需要依存于ApplicationContext.xml(提供注解支持的語句),所以還是得寫,盡管其并沒有內(nèi)容。
  6. @Configuration+@Bean和@Configurationn+@ComponentScan是額外兩種注解配置bean的方法,兩者都是對(duì)xml的替換,前者@Configuration標(biāo)注配置類,內(nèi)部用@Bean標(biāo)注方法并實(shí)現(xiàn)返回實(shí)例,即可實(shí)現(xiàn)對(duì)bean的裝配,默認(rèn)方法名對(duì)應(yīng)id;后者則是在指定bean對(duì)象上標(biāo)注@Component然后再配置類上標(biāo)注@Configuration+@ComponentScan(“指定掃描的包名”)即可實(shí)現(xiàn)對(duì)指定區(qū)域bean的裝配;
動(dòng)態(tài)代理 繼承方式(cglib)
  • 懶得看
接口方式(JDK,AOP默認(rèn)執(zhí)行的方式)
  • 只需定義好執(zhí)行InvocationHandler接口的調(diào)用處理程序類,然后在其中實(shí)現(xiàn)增強(qiáng)的方法和功能定義,JDK在運(yùn)行時(shí)自動(dòng)生成代理對(duì)象,需要注意的是動(dòng)態(tài)代理中沒有代理類的概念,這也正是“動(dòng)態(tài)”的一種體現(xiàn);但是仍然存在規(guī)范接口和實(shí)現(xiàn)接口的被代理類。
  • 其中InvocationHandler的invoke方法是代理入口,即代理類的增強(qiáng)方法被調(diào)用時(shí)觸發(fā)的程序,注意是在參數(shù)method調(diào)用invoke方法時(shí)為增強(qiáng)方法被調(diào)用的時(shí)機(jī),提供三個(gè)參數(shù):
  1. ProxyInstance=代理的類實(shí)例;
  2. Method=代理類的方法;
  3. Args=方法參數(shù);
  • 在需要代理的地方調(diào)用Proxy的代理生成靜態(tài)方法,Proxy.newInstance()實(shí)例化代理接口,也需要三個(gè)參數(shù):
  1. 接口類(被代理類)加載器,進(jìn)行聲明定義代理類;
  2. 規(guī)范接口數(shù)組;
  3. InvocationHandler實(shí)例;
  • 之后強(qiáng)轉(zhuǎn)返回結(jié)果就是代理類的實(shí)例,可以通過調(diào)用增強(qiáng)方法實(shí)現(xiàn)訪問代理類進(jìn)而訪問被代理類。
  • 需要注意的是一般在InvocationHandler會(huì)存在與被代理類(實(shí)現(xiàn)規(guī)范接口的類)的關(guān)聯(lián)關(guān)系,以此來訪問其中的待增強(qiáng)方法。
AOP

對(duì)功能進(jìn)行橫向拆分,區(qū)別維護(hù),降低耦合度。
使用前需要導(dǎo)入aspectsJ依賴。
Spring注解的作用就體現(xiàn)在以注解為切入點(diǎn)的時(shí)候

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的盧龍網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
  • 執(zhí)行接口:MethodBeforeAdvice、AfterReturningAdvice等, 通過執(zhí)行接口完成:編寫多個(gè)功能類分別實(shí)現(xiàn)對(duì)應(yīng)接口重寫方法,之后在xml中在aopconfig中配置aop:pointcut,主要是expression的配置:在這里插入圖片描述
  • 自定義切面類,編寫要切入的方法,之后在xml里進(jìn)行AOP配置:在這里插入圖片描述
  • 自定義切面類應(yīng)用注解:
    在這里插入圖片描述
整合Mybatis
org.mybatismybatis3.5.2mysqlmysql-connector-java5.1.47junitjunit4.12org.springframeworkspring-webmvc5.1.10.RELEASEorg.springframeworkspring-jdbc5.1.10.RELEASEorg.aspectjaspectjweaver1.9.4org.mybatismybatis-spring2.0.2
  • Spring的配置文件(版本1):
  • 其中Mybatis-Config.xml中以及被省略掉了大多數(shù)內(nèi)容,同時(shí)在Mapper中寫改寫的SQL,在實(shí)現(xiàn)類中獲取會(huì)話獲取mapper執(zhí)行方法或者增加邏輯,調(diào)用方只管調(diào)用實(shí)現(xiàn)類的服務(wù)即可。
  • 也可以在外部配置db.properties文件然后通過標(biāo)簽數(shù)顯導(dǎo)入以及增加MapperScannerConfigurer的bean來自動(dòng)配置sqlSession,Spring配置文件(版本2):
		
  • 其中的MapperScannerConfiguer作用是,掃描basePackage包下的接口,結(jié)合注入的sqlSessionFactory為每個(gè)mapper接口生成bean(調(diào)用getMapper)等待被注入到service中。
Spring事務(wù)管理
  • 首先需要注冊(cè)配置事- 務(wù)管理器的bean;
  • 編程式事務(wù):利用try{}catch{}塊在異常時(shí)回滾事務(wù);
  • 聲明式事務(wù):利用AOP增強(qiáng)數(shù)據(jù)庫(kù)寫入方法為事務(wù)提交方式:(需要引入約束)
    在這里插入圖片描述
  • 其中事務(wù)的傳播特性是指對(duì)于在多個(gè)被Spring增強(qiáng)的事務(wù)方法間存在的調(diào)用,也就是嵌套調(diào)用事務(wù)方法,被調(diào)用的方法會(huì)根據(jù)傳播配置決定是否新建事務(wù)等,一般CUD用默認(rèn)即可,R用Supports。
    在這里插入圖片描述

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

文章名稱:SpringFrameWork學(xué)習(xí)筆記-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://muchs.cn/article26/cshsjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、用戶體驗(yàn)、移動(dòng)網(wǎng)站建設(shè)建站公司、網(wǎng)站排名企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)