Spring中常用的注解匯總

本文作者:梁開權(quán)紧武,叩丁狼高級講師脏里。原創(chuàng)文章,轉(zhuǎn)載請注明出處酝碳。

1.聲明bean的注解

@Component 組件疏哗,沒有明確的角色

@Service 在業(yè)務(wù)邏輯層使用(業(yè)務(wù)層)

@Repository 在數(shù)據(jù)訪問層使用(持久層)

@Controller 在展現(xiàn)層使用返奉,控制器的聲明(表現(xiàn)層)

2.注入bean的注解

@Autowired:由Spring提供

@Inject:由JSR-330提供

@Resource:由JSR-250提供

都可以注解在set方法和字段上芽偏,推薦注解在字段上(一目了然污尉,少寫代碼)被碗。

3.java配置類相關(guān)注解

@Configuration 聲明當(dāng)前類為配置類锐朴,相當(dāng)于xml形式的Spring配置(該注解貼在類上)

@Bean 注解在方法上焚志,聲明當(dāng)前方法的返回值為一個(gè)bean压真,替代xml中的方式(該注解貼在方法上)

@Configuration 聲明當(dāng)前類為配置類滴肿,其中內(nèi)部組合了@Component注解,表明這個(gè)類是一個(gè)bean(該注解貼在類上)

@ComponentScan 用于對Component進(jìn)行掃描呵俏,相當(dāng)于xml中的(該注解貼在類上)

@WishlyConfiguration@Configuration@ComponentScan的組合注解普碎,可以替代這兩個(gè)注解

4.切面(AOP)相關(guān)注解

Spring支持AspectJ的注解式切面編程麻车。

@Aspect 聲明一個(gè)切面(該注解貼在類上)
使用@After动猬、@Before赁咙、@Around定義建言(advice)彼水,可直接將攔截規(guī)則(切點(diǎn))作為參數(shù)凤覆。

@After 在方法執(zhí)行之后執(zhí)行(該注解貼在方法上)

@Before 在方法執(zhí)行之前執(zhí)行(該注解貼在方法上)

@Around 在方法執(zhí)行之前與之后執(zhí)行(該注解貼在方法上)

@PointCut 聲明切點(diǎn)在java配置類中使用@EnableAspectJAutoProxy注解開啟Spring對AspectJ代理的支持(該注解貼在類上)

5.@Bean的屬性支持

@Scope 設(shè)置Spring容器如何新建Bean實(shí)例(該注解貼在方法上叛赚,得有@Bean
其設(shè)置類型包括:
Singleton (單例,一個(gè)Spring容器中只有一個(gè)bean實(shí)例俺附,默認(rèn)模式)
Protetype (每次調(diào)用新建一個(gè)bean)
Request (web項(xiàng)目中事镣,給每個(gè)http request新建一個(gè)bean)
Session (web項(xiàng)目中璃哟,給每個(gè)http session新建一個(gè)bean)
GlobalSession(給每一個(gè) global http session新建一個(gè)Bean實(shí)例)

@StepScope 在Spring Batch中還有涉及

@PostConstruct 由JSR-250提供随闪,在構(gòu)造函數(shù)執(zhí)行完之后執(zhí)行铐伴,等價(jià)于xml配置文件中bean的initMethod

@PreDestory 由JSR-250提供,在Bean銷毀之前執(zhí)行畜吊,等價(jià)于xml配置文件中bean的destroyMethod

6.@Value注解

@Value 為屬性注入值(該注解貼在屬性上)
支持如下方式的注入:
》注入普通字符
@Value(“Michael Jackson”)String name;
》注入操作系統(tǒng)屬性
@Value(“#{systemProperties[‘os.name’]}”)String osName;
》注入表達(dá)式結(jié)果
@Value(“#{ T(java.lang.Math).random() * 100 }”) String randomNumber;
》注入其它bean屬性
@Value(“#{domeClass.name}”)String name;
》注入文件資源
@Value(“classpath:cn/wolfocde/demo/test.txt”)String Resource file;
》注入網(wǎng)站資源
@Value(“http://www.wolfcode.cn")Resource url;
》注入配置文件
Value(“${user.name}”)String bookName;

注入配置使用方法:
① 編寫配置文件(test.properties)
user.name=bunny
@PropertySource 加載配置文件(該注解貼在類上)
@PropertySource(“classpath:cn/wolfocde/demo/test.propertie”)
③ 還需配置一個(gè)PropertySourcesPlaceholderConfigurer的bean。

7.環(huán)境切換

@Profile 通過設(shè)定Environment的ActiveProfiles來設(shè)定當(dāng)前context需要使用的配置環(huán)境捌年。(該注解貼在方法上)

@Conditional Spring4中可以使用此注解定義條件化的bean延窜,通過實(shí)現(xiàn)Condition接口抹锄,并重寫matches方法伙单,從而決定該bean是否被實(shí)例化吻育。(該注解貼在方法上)

8.異步相關(guān)

@EnableAsync 配置類中布疼,通過此注解開啟對異步任務(wù)的支持游两,敘事性AsyncConfigurer接口(該注解貼在類上)贱案。

@Async 在實(shí)際執(zhí)行的bean方法使用該注解來申明其是一個(gè)異步任務(wù)(該注解貼在方法上或類上所有的方法都將異步宝踪,需要@EnableAsync開啟異步任務(wù))

9.定時(shí)任務(wù)相關(guān)

@EnableScheduling 在配置類上使用瘩燥,開啟計(jì)劃任務(wù)的支持(該注解貼在類上)

@Scheduled 來申明這是一個(gè)任務(wù)厉膀,包括cron,fixDelay,fixRate等類型(該注解貼在方法上,需先開啟計(jì)劃任務(wù)的支持)

10.@Enable*注解說明

這些注解主要用來開啟對xxx的支持汰具。
@EnableAspectJAutoProxy 開啟對AspectJ自動(dòng)代理的支持

@EnableAsync 開啟異步方法的支持

@EnableScheduling 開啟計(jì)劃任務(wù)的支持

@EnableWebMvc 開啟Web MVC的配置支持

@EnableConfigurationProperties 開啟對@ConfigurationProperties注解配置Bean的支持

@EnableJpaRepositories 開啟對SpringData JPA Repository的支持

@EnableTransactionManagement 開啟注解式事務(wù)的支持

@EnableTransactionManagement 開啟注解式事務(wù)的支持

@EnableCaching 開啟注解式的緩存支持

11.測試相關(guān)注解

@RunWith 運(yùn)行器,Spring中通常用于對JUnit的支持
@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration 用來加載配置ApplicationContext聚蝶,其中classes屬性用來加載配置類
@ContextConfiguration(classes={TestConfig.class})

12.SpringMVC相關(guān)注解

@EnableWebMvc 在配置類中開啟Web MVC的配置支持碘勉,如一些ViewResolver或者M(jìn)essageConverter等桩卵,若無此句雏节,重寫WebMvcConfigurerAdapter方法(用于對SpringMVC的配置)钩乍。

@Controller 聲明該類為SpringMVC中的Controller

@RequestMapping 用于映射Web請求,包括訪問路徑和參數(shù)(該注解貼在類或方法上)

@ResponseBody 支持將返回值放在response內(nèi)变过,而不是一個(gè)頁面媚狰,通常用戶返回json數(shù)據(jù)(該注解貼在返回值旁或方法上)

@RequestBody 允許request的參數(shù)在request體中哈雏,而不是在直接連接在地址后面裳瘪。(放在形參前)

@PathVariable 用于接收路徑參數(shù)彭羹,比如@RequestMapping(“/hello/{name}”)申明的路徑派殷,將注解放在參數(shù)中前,即可獲取該值拓轻,通常作為Restful的接口實(shí)現(xiàn)方法经伙。

@RestController 該注解為一個(gè)組合注解,相當(dāng)于@Controller@ResponseBody的組合枣氧,注解在類上达吞,意味著荒典,該Controller的所有方法都默認(rèn)加上了@ResponseBody寺董。

@ControllerAdvice 通過該注解,我們可以將對于控制器的全局配置放置在同一個(gè)位置,注解了@Controller的類的方法可使用@ExceptionHandler盯滚、@InitBinder魄藕、@ModelAttribute注解到方法上背率,
這對所有注解了 @RequestMapping的控制器內(nèi)的方法有效。

@ExceptionHandler 用于全局處理控制器里的異常

@InitBinder 用來設(shè)置WebDataBinder寝姿,WebDataBinder用來自動(dòng)綁定前臺請求參數(shù)到Model中饵筑。

@ModelAttribute 本來的作用是綁定鍵值對到Model里根资,在@ControllerAdvice中是讓全局的@RequestMapping都能獲得在此處設(shè)置的鍵值對。

想獲取更多技術(shù)視頻部脚,請前往叩丁狼官網(wǎng):http://www.wolfcode.cn/openClassWeb_listDetail.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市服傍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌罩抗,老刑警劉巖套蒂,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件操刀,死亡現(xiàn)場離奇詭異骨坑,居然都是意外死亡欢唾,警方通過查閱死者的電腦和手機(jī)礁遣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門肩刃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盈包,“玉大人续语,你說我怎么就攤上這事±闹欤” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵排嫌,是天一觀的道長缰犁。 經(jīng)常有香客問我帅容,道長,這世上最難降的妖魔是什么遣钳? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮姐直,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撞叽。我一直安慰自己能扒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布膨处。 她就那樣靜靜地躺著真椿,像睡著了一般突硝。 火紅的嫁衣襯著肌膚如雪解恰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機(jī)與錄音腐宋,去河邊找鬼胸竞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛煎饼,可吹牛的內(nèi)容都是我干的腺占。 我是一名探鬼主播衰伯,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼积蔚,長吁一口氣:“原來是場噩夢啊……” “哼意鲸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起尽爆,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤怎顾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后漱贱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體槐雾,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年幅狮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了募强。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡崇摄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情进每,我是刑警寧澤玄括,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布哪雕,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏钉疫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一凌唬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦麻掸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疼阔。三九已至,卻和暖如春淘邻,著一層夾襖步出監(jiān)牢的瞬間枚尼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工呼巷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人源譬。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像厚脉,于是被迫代替她去往敵國和親孵滞。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

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