




已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
Spring的注解一、 spring注解1、Autowired注入注解Autowired可以對成員變量、方法和構造函數(shù)進行標注,來完成自動裝工作。Autowired的標注位置不同,它們都會在Spring在初始化這個bean時,自動裝配這個屬性。Autowired是根據(jù)類型進行自動裝配的。例如,如果當Spring上下文中存在不止一個UserDao類型的bean時,就會拋出BeanCreationException異常。如果Spring上下文中不存在UserDao類型的bean,也會拋出BeanCreationException異常。我們可以使用Qualifier配合Autowired來解決這些問題。1. publicclassTestController2.3. Autowired4. Qualifier(“userDao”)5. Private UserService userService;6.7. RequestMapping(/showView)8. publicModelAndViewshowView()9. ModelAndViewmodelAndView=newModelAndView();10. modelAndView.setViewName(viewName);11. modelAndView.addObject(屬性名稱,屬性值);12. returnmodelAndView; 13. 14. 2、Resource注入注解JSR-250標準注解,推薦使用它來代替Spring專有的Autowired注解。Resource的作用相當于Autowired,只不過Autowired按byType自動注入,而Resource默認按byName自動注入罷了。Resource有兩個屬性是比較重要的,分別是name和type,Spring將 Resource注解的name屬性解析為bean的名字,而type屬性則解析為bean的類型。所以如果使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策略。如果既不指定name也不指定type屬性,這時將通過反射機制使用byName自動注入策略。3、Component注解 (不推薦使用)只需要在對應的類上加上一個Component注解,就將該類定義為一個Bean了。Spring還提供了更加細化的注解形式:Repository、Service、Controller,它們分別對應存儲層Bean,業(yè)務層Bean,和展示層Bean。在Spring版本(2.5)中,這些注解與Component的語義是一樣的,完全通用,在Spring以后的版本中可能會給它們追加更多的語義。所以,我們推薦使用Repository、Service、Controller來替代Component。4、Controller控制層注解通過controller標注即可將class定義為一個controller類, Spring的Controller是Singleton的。這就意味著會被多個請求線程共享。因此,我們將控制器設計成無狀態(tài)類。1. Controller2. RequestMapping(/test)3. publicclassTestController4.5. RequestMapping(/showView)6. publicModelAndViewshowView()7. ModelAndViewmodelAndView=newModelAndView();8. modelAndView.setViewName(viewName);9. modelAndView.addObject(屬性名稱,屬性值);10. returnmodelAndView;11. 12. 5、Service業(yè)務層注解通過service標注即可將class定義為一個service類,比如在一個Student實現(xiàn)類上加上Service(student),括號里面就是給實例化后的Student對象取的名字。這是在你一個接口有多個實現(xiàn)類的情況下區(qū)分實現(xiàn)類的方式。比如Student實現(xiàn)了Person接口,在你的controller里面Autowired Person時,假如這時Person還有另一個實現(xiàn)類User,為了確定實例化Student還是User, Service括號里面的名稱就有用了。1. Autowired2. Qualifier(student)3. private Person person;這樣就確定實例化了一個Person指向一個Student對象。6、Repository持久層注解通過repository注解標注持久層。注解括號內(nèi)是當前類實例化后的對象名稱,可以省略,默認值為當前類名(首字母小寫)。1. Repository(periodDao)2. public class PeriodDaoImpl implements PeriodDao3. 4. 7、 RequestMapping注解表示請求需要匹配的路徑,協(xié)議。參數(shù)說明:value表示需要匹配的url。method表示所需處理請求的http 協(xié)議(如get,post,put,delete等),可選值為RequestMethod這個enuparams格式為”paramname=paramvalue” 或 “paramname!=paramvalue”。 表示參數(shù)必須等于某值,或者不等于才進入此映射方法。不填寫的時候表明不限制headers用來限定對應的reqeust請求的headers中必須包括的內(nèi)容,例如headers=Connection=keep-alive, 表示請求頭中的connection的值必須為keep-alive。8、RequestBody注解在參數(shù)之前加入RequestBody注解。用來將指定的客戶端發(fā)送過來的請求參數(shù)的數(shù)據(jù)格式轉(zhuǎn)換成java實體1. RequestMapping(value=save,method=RequestMethod.POST )2. ResponseBody3. public Map save(RequestBody User user ) 4. String name = user.getName();5. 6. 9、ResponseStatus注解返回一個指定的http response狀態(tài)碼。1. RequestMapping(/responsestatus)2. ResponseStatus(value=HttpStatus.BAD_REQUEST) 3. public void responseStatusTest() 4. 5. 10、ResponseBody注解如果這個方法定義了ResponseBody注解。那么會把返回值轉(zhuǎn)換成這個數(shù)據(jù)格式,輸出給客戶端1. RequestMapping(“save”) 2. ResponseBody 3. public String userSave(RequestBody JSONObject reqJson) 4. 5. 11、Transaction事務注解要使用Spring3事務管理,要在applicationContext.xml增加事務管理器相關配置信息Transactional注解可以標注在類和方法上在方法上的Transactional注解會覆蓋掉類上的Transactional。Transactional的屬性:屬性名類型說明isolation枚舉Isolation的值事務隔離級別noRollbackForClass一組異常類,遇到時不回滾。默認為noRollbackForClassNameStirng一組異常類名,遇到時不回滾,默認為propagation枚舉org.springframework.transaction.annotation.Propagation的值事務傳播行為readOnlyboolean事務讀寫性rollbackForClass一組異常類,遇到時回滾rollbackForClassNameStirng一組異常類名,遇到時回滾timeoutint超時時間,以秒為單位valueString可選的限定描述符,指定使用的事務管理器Spring Transactional propagation 各個屬性值的含義REQUIRED業(yè)務方法需要在一個容器里運行。如果方法運行時,已經(jīng)處在一個事務中,那么加入到這個事務,否則自己新建一個新的事務。NOT_SUPPORTED聲明方法不需要事務。如果方法沒有關聯(lián)到一個事務,容器不會為他開啟事務,如果方法在一個事務中被調(diào)用,該事務會被掛起,調(diào)用結(jié)束后,原先的事務會恢復執(zhí)行。REQUIRESNEW不管是否存在事務,該方法總匯為自己發(fā)起一個新的事務。如果方法已經(jīng)運行在一個事務中,則原有事務掛起,新的事務被創(chuàng)建。MANDATORY該方法只能在一個已經(jīng)存在的事務中執(zhí)行,業(yè)務方法不能發(fā)起自己的事務。如果在沒有事務的環(huán)境下被調(diào)用,容器拋出例外。SUPPORTS該方法在某個事務范圍內(nèi)被調(diào)用,則方法成為該事務的一部分。如果方法在該事務范圍外被調(diào)用,該方法就在沒有事務的環(huán)境下執(zhí)行。NEVER該方法絕對不能在事務范圍內(nèi)執(zhí)行。如果在就拋例外。只有該方法沒有關聯(lián)到任何事務,才正常執(zhí)行。NESTED如果一個活動的事務存在,則運行在一個嵌套的事務中。如果沒有活動事務,則按REQUIRED屬性執(zhí)行。它使用了一個單獨的事務,這個事務擁有多個可以回滾的保存點。內(nèi)部事務的回滾不會對外部事務造成影響。它只對DataSourceTransactionManager事務管理器起效。12、Scope注解我們可能還需要通過bean的scope屬性來定義一個Bean的作用范圍,我們同樣可以通過Scope注解來完成這項工作:Spring容器最初提供了兩種bean的scope類型:singleton和 prototype,但發(fā)布2.0之后,又引入了另外三種scope類型,即request,session和global session類型。不過這三種類型有所限制,只能在web應用中使用,也就是說,只有在支持web應用的ApplicationContext中使用這 三個scope才是合理的。注意:這里的singleton和設計模式里面的單例模式不一樣,標記為singleton的bean是由容器來保證這種類型的bean在同一個容器內(nèi)只存在一個共享實例,而單例模式則是保證在同一個Classloader中只存在一個這種類型的實例。(1) scope類型singleton(單例模式)singleton類型的bean定義,在一個容器中只存在一個實例,所有對該類型bean的依賴都引用這一單一實例,這就好像每個幼兒園都會有一個滑梯一樣,這個幼兒園的小朋友共同使用這一個滑梯,而對于幼兒園容器來說,滑梯就是一個singleton的bean。此外,singleton類型的bean定義,從容器啟動,到他第一次被請求而實例化開始,只要容器不銷毀或退出,該類型的bean的單一實例就會一直存活。 通常情況下,如果你不指定bean的scope,singleton
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通運輸與物流行業(yè)物流園區(qū)智慧化建設研究報告
- RECTAS-2-0-生命科學試劑-MCE
- 初中信息技術課標解讀課件
- 護理安全持續(xù)質(zhì)量
- 顱腦損傷病人鎮(zhèn)靜鎮(zhèn)痛護理
- 人工智能與大數(shù)據(jù)融合的2025年在線教育平臺教學質(zhì)量提升策略分析
- 導診分診病例分析實務要點
- 肺炎兒童護理方法
- 二零二五年度14年國際貿(mào)易合同范本-國際貿(mào)易風險管理與保險服務協(xié)議
- 商業(yè)展陳設計
- 農(nóng)業(yè)水利考試試題及答案
- 肺結(jié)核患者護理課件
- 2025年北京市中考數(shù)學試卷真題(含答案解析)
- 番禺區(qū)地圖廣州市番禺區(qū)鄉(xiāng)鎮(zhèn)街道地圖高清矢量可填充編輯地圖
- 英語詞類完整版本
- 數(shù)據(jù)中心搬遷方案
- 概預算審核實施方案
- 連續(xù)油管工藝技術
- 華數(shù)奧賽教材五年級(共2頁)
- 車站出入口改造施工方案
- 河北省新世紀“三三三人才工程”實施方案
評論
0/150
提交評論